32 ポイント 投稿者 kciter1 2023-12-15 | 9件のコメント | WhatsAppで共有
  • 美しさとは何か?
    • 美しさは人が感じる価値
    • 驚き、新しさ、安定性、心地よさ、単純さなどを与えるもの
    • 驚くものと自然なものに分けられる
    • 美しさ(気づき)を感じるには、ある程度の基本的な知識が必要
    • 美しさは生存のためのもの。理解できないものを見ると不快感を覚える
  • 美しいコードの定義
    • コードは一人で扱うものではないため、美しいほどよい
    • 理想的には、読んでいて引っかかる部分が一つもないコード
    • 自然なコードがよい
  • 美しいコードを構成する4つの要素
    • 社会的、信頼的、線形的、宣言的
      • 社会的で信頼的な側面は安定性を追求する
      • 線形的で宣言的な側面は審美性を追求する
    • 社会的なコード
      • 周囲の状況をすべて考慮したコード
      • 慣習やルール、ミッションに従うこと
      • 言語の社会性と似ている
    • 信頼的なコード
      • 信じて使えるコード
      • 信頼できなければ自分で確認しなければならないコードになる
      • 純粋関数、冪等性、副作用などを考慮する
      • 副作用を完全になくすことはできないため、ドキュメントや例外によってその存在を知らせられる
    • 線形的なコード
      • コードを読むとき、上から下へ一度読むだけで済むこと
      • 線形的であれば、脳科学的にワーキングメモリが処理しやすくなる
    • 宣言的なコード
      • コードが何をするのかを正確に伝えること
      • 適切な名前を付けるのがよい
      • 脳科学的に短期記憶が処理しやすくなる
  • 現実的には
    • 美しいコードというものは、一度でぱっとできあがるものではない
    • 完璧に美しいコードはそう多くない
    • そのため、漸進的改善とコードの修飾という考え方が必要になる
    • 漸進的改善
      • リファクタリングを行うこと
      • 点検と改善を繰り返し、70〜80%の品質を継続して保つこと
      • いつ点検と改善を行うべきか?
        • コードオーナーシップが曖昧になったとき
          • 書かれたコードに関する知識が薄れてきたとき
        • 悪臭を感じるとき
          • コードを見て不快さや違和感を覚えるとき
    • コードの修飾
      • コードを美しく見えるように整えること
      • 代表的にはテスト、コードレビュー、ドキュメント化、コメントなどが使われる
      • テスト
        • コードをより信頼できるものにしてくれる
        • 動作を保証し、テスト自体がドキュメントにもなりうる
      • コードレビュー
        • 検証を通じてコードをより信頼できるものにしてくれる
        • コードオーナーシップを共有・伝播するため、コードの社会性も高められる
        • 無条件のコードレビューはボトルネックになることもある
      • ドキュメント化
        • コードをより理解しやすくしてくれる
        • ドキュメント化すべきタイミングは、他の開発者がそのコードの文脈や設計、ルールを知る必要があるとき
        • UMLのようなツールを使うとさらによい
      • コメント
        • やむを得ず生じる複雑なコード領域は、文書よりコメントで説明するほうがよい
  • コード品質は重要だが、美しいコードが必ずしも成功を保証するわけではない
    • むしろ設計や業務プロセスをより考慮すべき場合もある
    • コード品質が必ずしも製品品質を保証するわけではない

9件のコメント

 
elects 2023-12-19

wwwww

 
yangeok 2023-12-19

社会的なコードが重要そうですね(笑)

 
mhj5730 2023-12-18

よく整理された良い文章だと思います。チーム内でコード品質が原因の問題が頻繁に発生しているなら、読んで集まって議論するのにも良さそうですね。

 
ryuheechul 2023-12-16

難解になり得るトピックですが、すらすら読めますね。ありがとうございます!

 
acsdskim2023 2023-12-15

やはり段階的な改善が重要ですね。何事も一度で完璧にはいきませんから。

 
saalome 2023-12-16

自分が書いたコードに審美的な美しさを感じる趣味は、あくまで個人の価値観にとどめるべきだ。金をもらうプロが会社のコードを芸術的な観点で扱い、ジュニアに変なマインドまで植え付けるようなシニアには、どうかならないでほしい。でなければ開発者をやめて絵でも描けばいいのに、何が芸術だよ……

 
pastelcolors 2023-12-18

「美しさ」という言葉に、少しとらわれすぎているようですね

 
aiana 2023-12-18

タイトルだけ読む若者

 
gcback 2023-12-17

はは、ちょっとかなりオーバーでしたね