開発者は美しいコードを書かなければならないことをよく読みますが、初心者の私にとっては、美しいコードとは何か、どのようにそれを認識するのかわかりません。
当然の質問は、美しいコードを書く方法と、コードの品質を向上させるための実践的な習慣は何ですか?、私が書いたコードを美しくするために何を気にする必要がありますか(そして私が学ぶこと)。
開発者は美しいコードを書かなければならないことをよく読みますが、初心者の私にとっては、美しいコードとは何か、どのようにそれを認識するのかわかりません。
当然の質問は、美しいコードを書く方法と、コードの品質を向上させるための実践的な習慣は何ですか?、私が書いたコードを美しくするために何を気にする必要がありますか(そして私が学ぶこと)。
回答:
「美は目の判断によって買われる」。
そうは言っても、ほとんどのプログラマーは、美しいコードが明快さと透明性、優雅さ、効率、美学のバランスを示していることに同意すると思います。
明快さと透明性:明快さは、読者がコードが何をするかをどれだけ簡単に推測できるかということです。透過的なコードは、それがするように見えることをします。コードが1つのことをしているように見えるが、実際には他の何か(またはそれ以上)を行う場合、それは透過的ではありません-それは誤解を招くものです。
優雅さ:ほとんどのアルゴリズムを実装する方法はたくさんありますが、いくつかの方法は不器用で、他の方法はきちんとしていて優雅です。簡潔さはしばしば優雅さを追加しますが、過度の簡潔さは明瞭さを低下させる可能性があります。
効率:リソース(CPU時間、メモリ、I / Oなど)の不必要な使用を回避します。
美学:目に優しい。これは非常に主観的です。それは主にスタイルになります。重要な考慮事項の1つは、一貫したスタイルを持つことです。たとえば、スタイルを途中でインデントするなど、変更するコードは見苦しくなります。
人々をだまして、美しいコードは次のように思わせないでください。
そうではないからです。そのようなコードはかわいくて、一見の価値は確かにありますが、あなたが落ち着きたいコードの種類ではありません。
そして、あなたは、変なラムダを継承する派手な再帰メタテンプレート静的多型を知っていますか?あなたはそれらを使用する明確な理由なしに革新的で気の利いたトリックにジャンプしたいかもしれません。しかし、言語の境界を押し広げるコードも美しいものではありません。
彼らはセクシーです。
たくさんの楽しみがありますが、次のことを自問してください。私は本当にこの言語の解剖学を探求するのに時間を費やしたいですか、それとも言語と協力して美しいものを作りたいですか?結局のところ、プログラミング言語は作成するツールにすぎません。
では、美しいコードとは何ですか?
美しいコード=保守可能なコード。 それでおしまい!
それが式だ!
何かを書くことができて、数か月後に戻って、それについて進歩を続けていれば、それは素晴らしいことです。1年後に、既存の機能を微調整するだけでなく機能を追加する必要があることに気付き、比較的簡単にそれを行うことができれば、それは素晴らしいことです。他の人があなたのコードベースに足を踏み入れて、物事が整理されているために何が起こっているかをすぐに理解できれば、彼らはより多くの髪を持ち、また美しくなります。
したがって、あなたが尋ねたい本当の質問は、「どのようにメンテナンス可能なコードを書くのですか?」です。私はそれがより大きな質問であり、それが非常に創造的な規律だと思う。コードを書き続けるだけですが、今回はもっと美しくなるかどうかを自問しないでください。保守性を高めることができるかどうかを自問してください。
これに関する私の見解は、「美しいコード」は客観的または特に有用な用語ではないということです。そして、それを定義しようとするべきではありません。
英語の単語「美」の典型的な辞書の定義は次のようになります。
一般的なスレッドは、「美」は美的に楽しいものであるということです。「美しさは見る人の目にある」という言葉で示されているように、それは必然的に主観的です。
「美しさ」という言葉をコードに適用できますが、明らかな意味は、コードが「審美的に楽しい」ということです。
しかし、その後、「美しいコード」が特定の属性セット(他のアンサーによって示唆されている)を持っていると言うことは、審美的に楽しいという明白な意味の矛盾です。美学とは、人々... 個々の人々 ...が物事をどのように知覚するかということです。
別の言い方をすれば、誰かが私に美しいと思うべきことを教えてくれるのを嫌う何かがあります。それは人々、芸術作品、またはコードの中にあります。
私が思う限り、美しいコードは美しいと思うコードであり、それがそれです。それは主観的で個人的なものであり、そのままにしておきます。
これが私のアドバイスです。
回答に目を通すどのように非プログラマに「美しいコード」を説明することができますか?そして、彼らが焦点を当てるために言う特性を参照してください。次に、Code Completeのような本を取り上げて読み通し、より良いコードの書き方に関するアドバイスを学びます。
ある時点で、「これはcodeいです」という古いコードを見ていると、あなたにぶつかるでしょう。それは直接的な審美的な反応です。そしてそれを見ると、コードをプログラマのように見ていることに気付くでしょう。そして、見栄えの良いコードがどのように見えるべきか知っているので、さを見ることができます。
美しいコードという用語は、非常に曖昧で抽象的な用語です。それが何を表し、何を意味するかは簡単に理解できますが、決して二次的な目標以上のものと見なされるべきではありません。
多くのコードカバレッジメトリックを思い出させます。数字が十分に高くなったら、リラックスして別の場所に行くことができます。約80%のカバレッジを持つコードベースは優れていますが、防弾ではありませんが、他のことを冷やしたりするのに十分です。40%のカバー率を持つことは非常に恐ろしいことであり、その数を増やすことをお勧めします。
ポイントは、数が少ない場合にのみコードカバレッジが本当に意味があるということです。低くしないでください。カバレッジが特定のポイントまで上昇したら、他の何かに進みます。
同様に、美しいコードは素晴らしいです。すばらしいコードがあれば、すばらしいものに進みましょう。それについて強調しすぎないでください。その100%のマークをヒットすることは決してありません。そうすることで、読み方や見た目に集中しすぎて、何をするのか、どうするのかが十分ではないことに気付くでしょう。 。したがって、妥当なマークに到達してから停止します。
しかし、あなたのコードがcodeい場合、スパゲッティコードの巨大な複雑な混乱の場合、ファイルを開くのが物理的に苦痛な場合、コメントやドキュメントなどがない場合は修正します。そして、できるだけ早くそれを行います。
時間の経過とともに、コードベースは全体的にきれいになり、一般的に明るく、一般に美しくなり、より重要なことに、無駄を少なくすることに焦点を当てると使いやすくなります。美しいコードを書くことは、ワンステップのプロセスではありません。
魔法の哲学はありません。その1000の小さなステップはすべて一緒に行われ、そのすべてが、コードがどれほど美しいかとは関係のない具体的な目的に役立ちます。しかし、それらを一緒に提供すると、それらはその部分の合計として美しいコードを形成します。ヴォルトロンのように。またはキャプテンの惑星。
私はここでの答えに本当に同意しますが、技術的ではないアプローチを取ると、美しいコードは著者の手近な問題の思考の明快さの表現であり、よく定式化された正確でシンプルな言語を通して現れます。
私にとって、美しいコードを見ることは、芸術作品を見て、メーカーの意図を示す新しい詳細を見ることに似ていますが、さまざまな部分がどのように実現されたか、それぞれが非常に多くの質問に答えて、最後に、その存在がどのように自然の法則のように感じられ、すべてが揃っているので、壮大、感動的、美しいというwords敬の言葉でしか説明できない。
したがって、その観点から、プログラマーとしてのキャリアでは、知識が不足しているために他の人が理解できない美しいコードを発見する可能性があります。
美しいコードには、別の方法で述べたようにすべての実用的な品質があります、私は完全に同意します。
次の3つの基準があります。