一番下には、これが私にとって1年の4分の1ごとにどのように変化したかについての更新がいくつかあります。それらは価値があると思います。
良い命名。または、それが他の誰かのコードである場合、そのシステムのクラス/機能の悪い名前にも基づいて良い名前/責任を属性付けしようとするので、私の頭の中で意味があります。一度実行すると、低レベルの実装が覚えやすくなります。
それは私が持っているすべてです。このサイトには多くの純粋主義者がいますが、どんな種類のパターンやオブジェクトを知っているかを神に誓うでしょうが、適切な命名はあなたを遠くに導きます。最小限の文書化/適切な名前/十分に分離されたコードを作成することで、私は自分自身よりも多くのことをしました。私が正しかったことの1つは、コードのフローを説明する適切な名前付け、コメント、および回路図に多くの時間を浪費することでした。あなたが私のコードを深く拡張したいのなら、低レベルの実装が必要です。適切に記述されたコードは合理的な方法で拡張できるため、誰かまたはあなたが低レベルの実装を理解/覚えていなくても大丈夫です。
私と同じように私の元の分野の人々が真実であることを知っているという少しの論争に興味があるなら、ここに書かれていることを聞くと、あなたはこの答えに同意することと同意しないことの両方を学ぶでしょう、先に読んでください:
しかし、ここには別の問題があります-純粋主義者です。合理的で完全に論理的な言葉遣いのある答えとイデオロギーが聞こえます。実際、それらには何も問題はありません。しかし、あなたは彼らに従う必要はありません。実際、彼らはあなたの不利な状況に陥っているかもしれません。
私の友人は大きなシステムで働いていましたが、彼らは慣習やパターンについて少しだけ気にしている人々を笑い飛ばすだけで、正当な理由でそれをやります-私のデータ分析の主な分野からこの理由を見つけることができます、私はそのような経験豊富な開発者ではないので、あなたが考えるものの大部分は重要であり、重要ではありません。この意味であなたのエゴとは強い相関関係があります。多くの場合、個人は、彼のエゴのために、彼が「私と同じこと」を言ったと考える権威によって今や強化されている彼のバイアスのために彼が最も誤解したという知識を得るでしょう。これは非常によく知られたトラップであり、決して陥るべきではありません。だからといって、彼がそれを正しく使っていなかったり、より大きな利益のために使っていたわけではありませんが、多くの場合、これらの人々がすることは、彼らが言っていることが金賞であることを約束することです。
だからあなたは何ができますか?
コードを同僚に説明し、高レベルの観点から意味があるかどうかを尋ねます。
それは重要なことのすべてです。もちろん、誰かのコードを読んでいる人は、常に特定の実装を見るためにalt-tabフェスタを持っていますが、あなたのコードを読んでいる人があなたのシステムの高レベルの理解を持ち、 「(もう一度、必ずしも知っているわけではないが、完全に「どのように起こるか」)、あなたは黄金だ。
これは私が先に進んでパフォーマンスが良くない、または何も尊重しないがらくたコードを書くと言っているのではありませんが、私が言っているのは次のとおりです:
1)忘れても大丈夫です。やがて、作業中のコードを読むのが上手くなります。あなたが読んでいるコードがあなたが良いレベルで低レベルの実装を知っていることを要求するなら、それはひどく書かれたコードであり、私が前に言ったことに遊びます:同僚はあなたを理解していますか?
2)世界は非常に頭が良くない非常に知的な人々でいっぱいです。彼らはまた、しばしば非常に感情的であり、彼らは外部の力からバイアス強化する傾向があります。彼らは何をするのか非常に優れていますが、情報を広める行為者が忘れるのは、「論理」に裏打ちされたアイデア/情報は、それらを送るもののコンテキストを持っているということです。情報も役立ちます。あなたにとって理にかなっていることは他の人にとって意味があり、彼らはそれを愛しますが、情報は絶対的なものとみなされるべきではありません。独自のコンテキストが一致するかどうかを確認します。それは、億万長者が私たちにこれらの「前進するための知識のビット」を与えているのと同じです。
要するに、理解しやすいコードを作成し、いくつかの人が言うほど多くのパターン/クラスと精錬所が必要な場合でも、まだ議論の余地があることを理解してください。議論の両側には非常に賢い人がいます。それはあなたのチームのために合理的な方法で何でもするというアイデアを強化するだけです-重要ではない小さな詳細に固執しないでください、あなたはそれらを理解します後で、覚えておいてください、あなたはタイミングが最も重要なものである非常に競争の激しい世界に住んでいます:
スタートアップ成功のタイミング。
時間とリソースを意味のある貪欲な方法で割り当てます。
6か月後の編集を次に示します。
それは非常識な旅でした。基本的に、分離/適切な命名とドキュメンテーションだけで、コードベースの内外に何でもプラグインできるとは思いませんでした。新しい変更に対応するために多くのコードを書き直さなければならず、2〜3日でかなりの時間を費やしました。知識不足やベストプラクティスがないため、どこでもSOLIDをフォローしていなかったと安全に言える。別々に名前を付けてドキュメントを作成すると、コードの変更をすぐに行うことができます。
誤解しないでください:密結合したコードを記述すると、SOLIDを嫌うかどうかにかかわらず、苦労することになります。基本レベルでそれを理解して適用することで、正直なところ、大きな分離が可能になりますOOPが本当に役立つ唯一のことです。OOPはコードの再利用についても想定されていましたが、それはあちこちで発生します、作成した多くのオブジェクトを実際に再利用することはできないため、システムが十分に分離されていることを確認してください。成熟に達して、ボブおじさんが来てあなたのプロジェクトをリードすると仮定して、彼は言う。 " (私は願います)。私にとっては、うまくいきます。私のLOCは絶えず変化しますが、執筆時点では1万行のコードであり、1人の人にとって調和して機能するコードは110万行です。
ここに、3か月後の、リファクタリング中の8か月のコードの編集を示します。
それはすべて理にかなっています。何が起こっているのか、そして回路図/優れた命名とコメントのためになぜそれが機能するのかを完全に理解しているので、今私は概念的に概念を書き直し、新しいアイデアでコードを作り直すことができます。ネーミングについてはあまり気にしないコードを何年も前に書いたので、それを経験するのは苦痛です。私は今、私のコードを説明する次のステップがどうなるか考えています。