ビューティフルコード


芸術とは
私がこの質問に答えるならば、その最もすばらしい状態の何でも芸術であると言います.
コードは異なりません.
私にとって、プログラマー、高品質のコードは芸術の絶対的な形です.美しいコードを認識するのは難しいことではない.あなたはそれがモナリサを鑑賞するのは難しいと思いますか?だめ!あなたはそれを見なければならない.
繰り返しますが、コードは異なりません.
では、なぜ私たちの多くがちょうどそれを実行するために何かを書くのですか?
これが理由です.
締め切りは
  • です.
  • ボスはすぐにそれを必要とします.
  • コードベースはゴミ箱です.
  • 私は欲求不満です、私はちょうどそれが終わって欲しいです.
  • 私はもっと多くのお金が必要なので、もっと多くのプロジェクトを得ることができます.
  • ああはい!これは動作するはずです.[ StackOverflowからコードをコピーする]
  • 私は行くことができるが、私はポイントを得る.
    これらは、低品質のコードにつながるシナリオです.
    高品質コード対低品質コード

  • 高品質のコード:
  • はクリーナーです.
  • は読みやすいです.
  • は維持可能です.
  • はより速いです.
  • は再利用可能です.
  • はよりよいです!

  • 低品質コード:
  • はクリーンではありません.
  • は読みにくい.
  • は維持できませんそして、あなたが私を疑うならば、2年で私に尋ねてください!
  • は高速ではありません.
  • は再利用できません.
  • は恐ろしいです!
  • 私はあなたがコードが好きであるということを知っています、そして、私のポイントを示すために、私は1年以上前に私が書いたコードの小さな部分を持ってきました.
    これは、データベースからクーポンを受け取り、使用するようにマークする単純な機能です.
    public function revokeCoupon(Request $request) {
        $request->validate([
            'code' => 'required | integer'
        ]);
        $code = $this->checkIfCodeIsValid($request);
        if($code) {
            $flag = $this->checkIfCodeIsNotRevoked($code);
            if($flag) {
                $order = $this->getOrderAssociatedWithCode($code);
                if($order) {
                    DB::connection('my_online_shop')
                        ->table('revoke_list')
                        ->where('code' , $code->code)
                        ->update(['revoked' => 1 ]);
                    return redirect()->back()->with('message' , self::SUCCESSFUL_UPDATE_MESSAGE);
                }
            } else {
                return redirect()->back()->with('warning' , self::CODE_ALREADY_REVOKED);
            }
        } else {
            return redirect()->back()->with('error' , self::NO_SUCH_CODE);
        }
        return redirect()->back()->with('error' , self::UNSUCCESSFUL_UPDATE_MESSAGE);
    }
    
    ああ人類!どうやってこれを書きましたか.これは、私が低品質のコードとして言及していたものです.
    それで、私はそれをよりよくすることに決めました.
    public function revokeCoupon(Request $request) {
        $request->validate([
            'code' => 'required | integer'
        ]);
    
        $code = $this->checkIfCodeIsValid($request);
        if(!$code) {
            return redirect()->back()->with('error' , self::NO_SUCH_CODE);
        }
    
        $flag = $this->checkIfCodeIsNotRevoked($code);
        if(!$flag) {
            return redirect()->back()->with('warning' , self::CODE_ALREADY_REVOKED);
        }
    
        $order = $this->getOrderAssociatedWithCode($code);
        if(!$order) {
            return redirect()->back()->with('error' , self::UNSUCCESSFUL_UPDATE_MESSAGE);
        }
    
        DB::connection('my_online_shop')
            ->table('revoke_list')
            ->where('code' , $code->code)
            ->update([
                'revoked' => 1 
            ]);
        return redirect()->back()->with('message' , self::SUCCESSFUL_UPDATE_MESSAGE);
    }
    
    わかってる!わかってる!それはまだ長すぎるし、それは固体を破る.私はちょうどそれが少しクリーナーにするすべてのネストされたifステートメントを取り除くことを望んだ.
    次のステップはバリデーションを取り除くことでした.私は、それがもう一つのポストのための話題であるので、プロセスの詳細を進めるつもりはありません.(Click for more details.)
    public function revokeCoupon(RevokeCouponRequest $request) {
    
        $code = $this->checkIfCodeIsValid($request);
        if(!$code) {
            return redirect()->back()->with('error' , self::NO_SUCH_CODE);
        }
    
        $flag = $this->checkIfCodeIsNotRevoked($code);
        if(!$flag) {
            return redirect()->back()->with('warning' , self::CODE_ALREADY_REVOKED);
        }
    
        $order = $this->getOrderAssociatedWithCode($code);
        if(!$order) {
            return redirect()->back()->with('error' , self::UNSUCCESSFUL_UPDATE_MESSAGE);
        }
    
        DB::connection('my_online_shop')
            ->table('revoke_list')
            ->where('code' , $code->code)
            ->update([
                'revoked' => 1 
            ]);
        return redirect()->back()->with('message' , self::SUCCESSFUL_UPDATE_MESSAGE);
    }
    
    多くのクリーナー!
    私はもう少しそれらの機能をもう少しして、掃除することができました、しかし、私は結果に満足しました;それで、私はコードを保存して、それを私のgitlabに押しました.
    この最後のバージョンのコードは、最初のバージョンよりも読みやすく、メンテナンス可能です.
    高品質コードの利点を知った今、そのようなコードを書く方法を尋ねるかもしれませんか?かしら?もしそうならば、それに着きましょう.
    どのように高品質のコードを書く?
    実際には以下のような側面があります.
  • ノンテクニカル側
  • 技術的な側面

  • 非技術面
    良いコードを書くためには、いくつかの特徴的な特徴を開発する必要があります.
  • 忍耐.顔をしましょう私たちは失敗するだろう.あなたが数回後にあきらめたいならば、あなたはより良いあなたの経歴を変えます!私は正直です.ソフトウェア工学は、あなたが以前に解決したことのない問題を解決しなければならない分野です.
  • 情熱.私は何かについて情熱的であることはあなたに不必要で無敗にすることができるとわかりました、そして、これはあなたがこの世界で欲しいどこにでも得ることができます.
  • 永続性.あなたが失敗したことは重要ではありません
    1000回、私は一度だけ働く必要があります!それで再びコード化してください.

  • 技術面
    OKは、あなたが待っていた部分です.高品質のコードを書くには、これらの単純なルールに従う必要があります.
  • あなたの変数/メソッド名に注意してください.revokeCouponは、my_cool_functionであるより良い方法です.
  • 場合によっては、あなたのifの条件の誤った側面を考慮する方が良いでしょう.なぜなら、それはあなたが理解しやすいコードになるかもしれないからです例えば、
  • //textbook
    if($condition) {
        return $jobNumberOne
    } else {
        return $jobNumberTwo
    }
    
    //using this tip
    if(!$condition) {
        return $jobNumberTwo
    }
    return $jobNumberOne
    
  • コーディング時に自分自身を繰り返すことはありません.これは実際にもドライと呼ばれる有名な原則です!
  • 長い関数を短い関数に分割します.私は、私がポストの初めにその悪夢を書いていたとき、私がこの先端を知っていたことがうれしいです.それは1つの長い機能だった場合想像!ゴシ!
  • これらはいくつかの簡単なルールを開始するためだった.私は、あなたと共有するより多くの方法を考えてみます.
    あなたがきれいなコーディングのあなた自身の方法を持っているならば、私は彼らについて知って幸せ以上です.
    次のポストまで🖤

    Link to cover image