コーディングするときは、時間をかけて自分のコードを学び、理解する必要があります。これは、TLがそれほど多くの言葉であなたに伝えようとしていることかもしれません。現在のプロジェクトのTLである私は、過去11か月間に多くのコードレビューを行っており、一部の開発者が独自のコードベースまたは他の場所(googleなど)、それをコピーして貼り付けます。個人的には、コードが単純な単体テストに合格しても実際に何が行われているのか理解していないため、私はそれに耐えられません。発生する可能性がある境界ケースまたは予期される障害状態。
前のステートメントの結果として、コピー/貼り付けする必要がある場合は、以前に記述した、理解しているコードのみをコピー/貼り付けしてください。他の人のアイデアを「借りる」ことは確かに問題ありませんが、その場合は、コードを1行ずつ書き直してください。コードを書いているときに、コードの内容をよりよく理解できるからです。外部APIを使用している場合、そのAPIを使用する例がある場合でも、とにかく数分かけて参照を見つけ、そのAPIがどのように機能するかを学習してください。それが以前に機能した場合、それはあなたの状況でも機能すると想定するだけではありません。
読んで、DRY原理を愛することを学んでください。多くの場合、コピー/貼り付けしたくなるものは、共通の場所(個別の関数、個別のクラス、個別のライブラリ...)に配置できます。
SOLIDの原則を読み、愛することを学びます。その間、mouvicielによってすでに言及されているKISSを確認してください。これらの原則はすべて、非常に簡潔でクリーンなモジュール式コードを生成することを目的としています。それらの中に大きなクラスと大きな関数がある場合、明らかに物事を見つけるのがはるかに難しくなり、それに加えてコードが何をするのかを説明しようとします。一方、SRPをフォローする(または少なくともフォローしようとする)場合、各クラス/関数が1つのことだけを担当するようにすると、コードは小さくなり、非常に読みやすくなります。
Clean Codeのコピーを入手します。とても良い本です。自明で、読みやすく、維持し、拡張しやすいコードを書くことについて話します。読みやすいコードを書く練習をしている場合は、コードレビューで独自のコードを読み取ることに問題はありません。そしてこれは面白い部分です、私は人々に彼ら自身のコードを読むか、単に変数が何を表しているかを私に言うように頼みました、そして彼らはたった一週間前にそのコード(真新しいクラス、レガシーではない)を書いたにもかかわらず答えられませんでした。良い命名は長い道のりです。
単純化とリファクタリングを行った後でも、あまり明らかではないある種のアルゴリズムを実行する必要がある関数がまだある場合は、時間をかけてその関数にコメントブロックを記述し、アルゴリズムを説明します。2か月後にその機能を変更する必要がある場合に役立つだけでなく、コードレビューで待ち伏せされた場合は、書き込んだ内容を簡単に読み戻すことができます。
上記のすべての項目を実行しても、問題が発生しますか?あなたはチームに新しく、多くのレガシーコードで作業するように依頼されましたか?その場合は、TLがA $$であり、会議の前に、関係者全員の時間を無駄にしないように頼むことで、積極的に取り組むことができます。新しい人がチームに参加するとき、TLは新しいプラットフォーム、新製品、新しい人、新しい環境での作業が新しい人からの多くの集中を取り、その人は最初にいくつかの詳細を見落とすため、十分な忍耐が必要です。設計どおりに機能し、TLはそれを受け入れる必要があります。
上記のすべての項目が終わった後でも、恐ろしいコードレビューがあるとまだ感じています。TLに相談してください。コードレビューミーティングの性質上、実際にはTLが完全に満足しているのに、人々が気分が悪くなることがあります。コードレビューを行うときの目標は、何を変更する必要があるかを強調し、変更を理解して先に進むことです。多くの場合、私は礼儀正しくする時間がないので、一部の人々は防御的になり、私のコメントのすべてに答えようとします。これらの状況では、コードレビューの会議のグラインドが停止するので、中断して先に進む傾向があります。一般的には、ミーティングの後に、彼らがプロセスを理解していることと、それが個人的なものではないことを確認するために、新しい人たちと話します。少数のコードレビューの後、人々は一般的にはるかに快適になります。