最近、プログラミングスタイルを変えた5冊の本について書きました。コメントの中で、何人かの読者はロバートS.マーティンによる「クリーンコード」を推薦しました。その結果、私はその本を読み、詳細なレビューに値することがわかりました。

本について
« » 2008 , Amazon. , « », Agile Manifesto . 4,4 Goodreads 13 000 . , , .
.
1. —
, — . , ( ) .
むしろ、スケッチから始めて、徐々に詳細を追加していきます。私たちは改訂、改良、拡張を行います。ソフトウェアが必要な方法で機能するまで、さまざまなレベルの抽象化で作業します。ソフトウェアが実際に完成することはありません。
これが「クリーンコード」の本質です。この本を通して、著者はソフトウェアが芸術であり、絵画に似ているという考えを追求しています。

しかし、単純なコードの記述からプログラミングの技術にどのように移行しますか?
Martinによると、私たちが自由に使える主なツールは、継続的なリファクタリングとテスト駆動型開発(TDD)です。それらは、コインの両面のように、互いに切り離せません。ここにいくつかの定義があります。
— .
— , , .
, .
- . , .
- , . .
- . .
« , « ». , «», , . ».
, , , , — , , .
2. !
« — . , ».
.
, .
- — 20 10 .
- , .
. , .
. . (SRP).
— « » , . , , , .
3.
« ».
.
, , , . :

:

:
- .
- .
- , .
- , .
.
- 意図を明らかにする名前を使用します-たとえば、int日ではなくint経過時間InDays ...
- 発音可能な名前を使用する-例:DtaRcrd102ではなくCustomer
- エンコードを避けてください-m_プレフィックスを使用したり、ハンガリー表記を使用したりしないでください。
- 概念ごとに1つの単語を選択します。本質的に、同じ操作に対してフェッチ、取得、取得などの異なる名前を使用しないでください。
4.抽象化は重要です

Clean Codeによると、関数が1つのタスクのみを実行するようにする場合は、各関数のすべてのコマンドが同じ抽象化レベルにあることを確認する必要があります。
Martinは、FitNesseの次の例でこれを説明しています。

. — hr , — . , , :

:
- render () hr.
- HtmlTag.
- .
:
« ».
.
5. —
, , , , . , .
, , , , . « », , « , ».
« . , . , ».
.
, , , . , , — . , — .
« » , . , , — , .
, , . , , 13 , . , , , « », 2021 . , .