エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

【意訳+要約】Mastering the Art of Clean Code: Unlocking the Power of Programming Principles

※本記事は、Bardによる意訳+翻訳を活用し、レイアウト調整したものです。
※感想は、オリジナルです。

原文

Mastering the Art of Clean Code: Unlocking the Power of Programming Principles - DEV Community

意訳+要約

クリーンコードの極意:プログラミング原則の力を引き出す

クリーンコードとは、読みやすく、理解しやすく、拡張や変更が容易なコードのことです。クリーンコードを書くためには、プログラミング原則を理解し、実践することが重要です。

クリーンコードの重要性

クリーンコードは、以下のようなメリットをもたらします。

  • 開発者の生産性向上
  • コードの理解・保守のしやすさ
  • バグの減少
  • パフォーマンスの向上

クリーンコードを書くことで、開発者はより効率的に、より質の高いコードを作成することができます。また、チームで開発する場合、クリーンコードは意思疎通を円滑にし、開発の効率化を図ることにもつながります。

プログラミング原則とは

プログラミング原則とは、クリーンコードを書くための指針となるものです。プログラミング原則は、大きく分けて以下の2つの種類があります。

一般原則

一般原則には、以下のようなものがあります。

  • 単純さ:コードはシンプルでわかりやすいものであるべきである。
  • 重複の排除:同じコードを複数回書かないようにする。
  • 抽象化:共通する部分を抽象化することで、コードをより理解しやすくする。
  • 疎結合:モジュール間の依存関係を最小限に抑える。
  • 堅牢性:バグが発生した場合でも、システムが正常に動作するようにする。

言語固有原則

言語固有原則には、以下のようなものがあります。

  • 可読性:コードは読みやすく、理解しやすいものであるべきである。
  • 保守性:コードは拡張や変更が容易であるべきである。
  • パフォーマンス:コードは効率的に動作するべきである。

まとめ

クリーンコードを書くためには、プログラミング原則を理解し、実践することが重要です。プログラミング原則を意識してコードを書くことで、開発の生産性や品質を向上させることができます。

重要な部分

  • クリーンコードは、読みやすく、理解しやすく、拡張や変更が容易なコードのことです。
  • クリーンコードを書くことで、開発者の生産性向上、コードの理解・保守のしやすさ、バグの減少、パフォーマンスの向上などのメリットがあります。
  • プログラミング原則とは、クリーンコードを書くための指針となるものです。プログラミング原則は、大きく分けて一般原則と言語固有原則の2種類があります。
  • 一般原則には、単純さ、重複の排除、抽象化、疎結合、堅牢性などの原則があります。
  • 言語固有原則には、可読性、保守性、パフォーマンスなどの原則があります。

Bardさんに聞いてみた

Q:単純とは、どうすれば実現できるのでしょうか?

単純とは、複雑なものをシンプルにしたもの、または、無駄や余計なものを排除したものを指します。単純を実現するためには、以下の2つのポイントを押さえるとよいでしょう。

  1. 目的を明確にする

純化を行う前に、まずは目的を明確にする必要があります。単純化によって何を実現したいのか、具体的なゴールを設定しましょう。目的が明確になれば、何を削除したり、統合したりすればよいのかが見えてきます。

  1. 要素を分解する

複雑なものを単純化するには、まず要素を分解する必要があります。要素を分解することで、全体を俯瞰し、無駄や余計なものを見つけやすくなります。

具体的な方法としては、以下のようなものが挙げられます。

  • 機能や役割ごとに分解する
  • 関係性や依存関係ごとに分解する
  • 目的やゴールごとに分解する

要素を分解したら、それぞれの要素を必要かどうかを検討し、不要なものは削除したり、統合したりしましょう。また、要素間の関係性や依存関係を整理し、合理化することも大切です。

Q:クリーンコードにするためのアプローチとして、何か手法みたいなものは、ありますか?

はい、クリーンコードにするためのアプローチとして、以下のようなものが挙げられます。

  • コーディング規約を定める
    コーディング規約とは、コードの書き方のルールやガイドラインです。コーディング規約を定めることで、チーム全体でコードの書き方を統一し、可読性や保守性を向上させることができます。

  • レビューを実施する
    コードレビューとは、他のエンジニアに自分のコードをチェックしてもらうことです。レビューを実施することで、第三者の視点からコードの品質を評価してもらい、改善点を見つけることができます。

  • テストを実施する
    テストとは、コードが意図したとおりに動作するかを確認するためのものです。テストを実施することで、バグの早期発見や、コードの品質向上につながります。

  • リファクタリングを行う
    リファクタリングとは、コードの構造や仕様を変更することなく、コードの品質を向上させるための手法です。リファクタリングを行うことで、コードの可読性や保守性を向上させることができます。

これらのアプローチを組み合わせることで、クリーンコードに近づけることができます。

また、クリーンコードを書くためには、以下のスキルや知識も必要です。

これらのスキルや知識を身につけることで、より質の高いクリーンコードを書くことができます。

Q:プログラミングの基礎知識とプログラミング言語の基礎知識は、何が違うのでしょうか?

プログラミングの基礎知識とは、プログラミングの考え方や、プログラミングの基本的な要素に関する知識です。具体的には、以下のようなものが挙げられます。

プログラミング言語の基礎知識とは、特定のプログラミング言語の文法や構文、基本的な機能に関する知識です。具体的には、以下のようなものが挙げられます。

  • 変数
  • 関数
  • クラス
  • オブジェクト
  • 例外処理

プログラミングの基礎知識は、どのプログラミング言語でも共通して必要となる知識です。一方、プログラミング言語の基礎知識は、特定のプログラミング言語でのみ必要となる知識です。

プログラミングの基礎知識を身につけることで、プログラミングの基本的な考え方を理解し、どのようなプログラミング言語でもコードを書くことができるようになります。プログラミング言語の基礎知識を身につけることで、特定のプログラミング言語でコードを書くことができるようになります。

つまり、プログラミングの基礎知識は、プログラミングの土台となる知識であり、プログラミング言語の基礎知識は、特定のプログラミング言語を使いこなすための知識であると言えます。

Q:デザインパターンの知識は、どうすれば身につくと思いますか?

デザインパターンの知識を身につけるためには、以下の方法が挙げられます。

  • 書籍やWebサイトなどの情報を学ぶ
    デザインパターンに関する書籍やWebサイトは、数多く出版されています。これらの情報を学ぶことで、デザインパターンの概要や、具体的なパターンの使い方を理解することができます。

  • 実際にコードで実装してみる
    デザインパターンは、コードで実装することで、より理解を深めることができます。デザインパターンの解説書には、多くの場合、実装例が記載されています。これらの実装例を参考にして、実際にコードで実装してみましょう。

  • 他のエンジニアと交流する
    他のエンジニアと交流することで、デザインパターンに関する知見を共有することができます。デザインパターンに関する勉強会やイベントに参加したり、知人のエンジニアに相談したりするのもよいでしょう。

具体的な学習方法としては、以下のようなものが挙げられます。

  • デザインパターンの概要を学ぶ
    まずは、デザインパターンの概要を学びましょう。デザインパターンの種類や、それぞれのパターンの目的や特徴を理解しましょう。

  • 具体的なパターンを学ぶ
    概要を理解したら、具体的なパターンを学びましょう。パターンごとに、どのような問題を解決するために使われるのか、どのようなコードで実装するのかを確認しましょう。

  • パターンの応用方法を学ぶ
    パターンの使い方を理解したら、パターンの応用方法を学びましょう。パターンを組み合わせて使うことで、より複雑な問題を解決することができます。

デザインパターンは、プログラミングのスキルアップに欠かせない知識です。上記の方法を参考にして、デザインパターンの知識を身につけましょう。

また、デザインパターンは、プログラミング初心者には難しいと感じられることもあるかもしれません。そのような場合は、まずはプログラミングの基礎をしっかりと身につけた上で、デザインパターンの学習を始めるとよいでしょう。

Q:テストの知識とは、具体的にはどういうものを指しますか?

テストの知識とは、テストの目的や種類、テストケースの作成方法、テストの実行方法、テストの分析方法などに関する知識です。

  • テストの目的
    テストの目的は、コードが意図したとおりに動作するかを確認することです。また、バグを早期発見し、品質を向上させることも目的の一つです。

  • テストの種類
    テストの種類には、以下のようなものがあります。

 単体テスト:モジュール単位でテストを行う
 結合テスト:複数のモジュールを組み合わせてテストを行う
 システムテスト:システム全体をテストを行う
 受け入れテスト:ユーザーの要件を満たしているかを確認する
  • テストケースの作成方法
    テストケースとは、テストを行うための条件や期待される結果を記述したものです。テストケースを作成することで、テストの効率化や品質の向上を図ることができます。

  • テストの実行方法
    テストを実行するには、テストツールや手動テストなど、さまざまな方法があります。テストツールを使用すると、効率的にテストを実行することができます。

  • テストの分析方法
    テストを実行した結果を分析することで、バグの存在やテストの改善点を見つけることができます。テストの分析を行うことで、より質の高いテストを実施することができます。

テストの知識を身につけることで、以下のメリットがあります。

  • バグの早期発見や品質の向上につながる
  • 開発の効率化を図ることができる
  • チームでの開発を円滑に行うことができる

テストは、ソフトウェア開発において欠かせないプロセスです。テストの知識を身につけて、より品質の高いソフトウェアを開発しましょう。

テストの知識を身につけるためには、以下の方法が挙げられます。

  • 書籍やWebサイトなどの情報を学ぶ
    テストに関する書籍やWebサイトは、数多く出版されています。これらの情報を学ぶことで、テストの基本的な知識を身につけることができます。

  • 実際にテストを実施してみる
    テストは、実際に実施してみることで、より理解を深めることができます。テストツールや手動テストなど、さまざまな方法でテストを実施してみましょう。

  • 他のエンジニアと交流する
    他のエンジニアと交流することで、テストに関する知見を共有することができます。テストに関する勉強会やイベントに参加したり、知人のエンジニアに相談したりするのもよいでしょう。

具体的な学習方法としては、以下のようなものが挙げられます。

  • テストの基本を学ぶ
    まずは、テストの基本を学びましょう。テストの種類や、テストの目的、テストケースの作成方法などを確認しましょう。

  • テストツールの使い方を学ぶ
    テストツールを使用する場合は、テストツールの使い方を学びましょう。テストツールの使い方を理解することで、効率的にテストを実施することができます。

  • テストの実際の実施方法を学ぶ
    テストを実際に実施してみることで、テストの流れや、テストの注意点などを理解しましょう。

テストの知識は、ソフトウェア開発において重要なスキルです。上記の方法を参考にして、テストの知識を身につけましょう。

感想+雑記

クリーンコードで書くにも、まずは、ベースとなる基礎知識が必要な認識。
足りない場合は、レビューでそれを補う必要がある。
個人的には、下記の順序で習熟していけばいいと思う。

  1. プログラミング・プログラミング言語の基礎知識
  2. テストの知識
  3. デザインパターンの知識

触りを覚えたら、あとはひたすら対応するのみ。
対応も、振り返りを毎回実施して、何がベストだったか考える習慣を保つ必要があると思う。

あとは、やっぱり、生成AIとかによる工数削減で浮いた工数を、再モデリングとかに突っ込むしかないと思う。
リファクタリングによる、モデリングの再設計が、既存のコードをクリーンコードにするための近道だと思う。
あと、日々、プロジェクトの状況を監視できる仕組みを導入するべきだと思う。クリーンコードが崩れるのは、徐々に変化していくはずだから、それを検知する仕組みを作っておくべきだと思う。

日々の努力なくしてクリーンコードは作れない。
それを無視して作ろうと思わないほうがいい。