2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

プログラミングは設計行為である

Posted at

「プログラミングは設計行為である」「コードは設計書である」ということが以下の本に書いてあり、その通りだと思いました。
プリンシプル オブ プログラミング 3年目までに身につけたい一生役立つ101の原理原則

設計と製造の解釈

設計書をもとにプログラミングをすることを製造に分類する解釈がありますが、これは誤った解釈です。正しくは設計です。

  • 誤った解釈
    設計:基本設計、詳細設計
    製造:プログラミング、テスト、デバッグ

  • 正しい解釈
    設計:基本設計、詳細設計、プログラミング、テスト、デバッグ
    製造:リリースビルド

設計書と製造の関係

設計書と製造の関係は以下の通りです。この関係を前提に話を進めます。

  • 設計書は製造のためにある
  • 製造は設計書をもとに行う

プログラミングは設計行為である

設計書をもとにプログラミングをしている最中に、設計漏れによる仕様追加が必要になった場合を考えます。
報告すべき人に報告する、修正方針を見定めるなどすべきことがあると思います。コードの修正、つまりプログラミングも必要です。

このとき、プログラミングが設計であるか製造であるかによって設計書を修正すべきかが変わります。

・プログラミングが設計行為である場合
 修正方針が定まり次第、コードを修正します。修正内容に応じてテスト、デバッグも行います。
基本設計書、詳細設計書を修正する必要はありません。コードが設計行為の成果物であるからです。

・プログラミングが製造行為である場合
 修正方針を定めてから設計書を修正し、その設計書をもとにプログラミングする必要があります。
 設計書が修正されるまで、決してコードを修正してはいけません。製造は設計をもとに行わなければなりません。

この場合において設計書を律儀に修正しない、もしくは修正するのが面倒くさい人の方が多いのではないでしょうか。設計書を修正したとしても、設計書に日本語で書いたことをコードで書き直す必要があります。基本設計書、詳細設計書が成果物でないのなら、その修正は無駄ではないでしょうか。

プログラマがこれまでに何度も経験してきたそれは「製造行為から設計行為への手戻り」ではなく、「設計行為の一部」と考えます。プログラミングは設計行為です。

コードは設計書である

また、設計ミスの発見者はプログラミングの最中です。設計ミスを報告し、修正方針が確定した時点でコードを修正できるのではないでしょうか。それは設計書を修正する前に製造ができる状態にあるということであり、設計書と製造の前提に反しています。

基本設計書、詳細設計書はコードを書くための設計書です。コードが完成形に近づけば近づくほど不要になります。コード(設計書)はリリースビルド(製造)のために必要なアウトプット、つまり真の設計書です。

可読性が高いことの重要性

コードが設計書に足り得るには条件があります。それはシステムが可読性の高いコードで構成されている必要があるということです。
コードは複雑で、常に誰かの手によって変更されます。その過程で可読性が低くなってしまうと、コードを読み解くための時間が増加してしまい、詳細設計書などを修正しないことによって得た時間をロスします。最悪の場合、再設計が必要になります。そうなってしまっては元も子もありません。
コードが設計書であり続けるために、可読性の高いコードを書くことが必要です。

まとめ

  • プログラミングは設計行為である
  • コードは設計書である
  • 可読性の高いコードを書くべき

参考

プリンシプル オブ プログラミング 3年目までに身につけたい一生役立つ101の原理原則

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?