web-dev-qa-db-ja.com

ソースファイルは100SLOCを超えてはなりません

私はエイダに根ざしたベースラインに取り組み始めたところです。古いAdaプログラマーの多くは、ソースファイルは100SLOCを超えてはならないと主張しています。私はこれをオンラインで調査しましたが、この声明の出典は見つかりませんでした。これはガイドラインですか、それとも健全なソフトウェアエンジニアの原則に根ざしていますか?私はソフトウェアエンジニアを13年間務めていますが、これまで聞いたことがありません。彼らは、これらの小さなソースファイルのコードは理解しやすいと主張していますが、私には小さなソースファイルがたくさんあるように思われます。

2
Brian

私がこれまでにガイドラインに最も近いものは、理想的には同時にディスプレイ上でサブプログラムの完全なソースを見ることができるはずです。 。

現代のAdaプログラミングの信頼できるスタイルガイドである「 Ada 95品質およびスタイルガイド 」には、このような制限は含まれていないと確信しています。

このクレイジーなラケットで40年以上、学生として、そして専門家として、私は基本的に、約1ページ(約60行)以上の長さが必要な1つのルーチンを見てきました。状態がたくさんある(レコードは35だと思います)本当に醜いステートマシンを見たことがありますが、それは本当にきれいに因数分解できませんでしたが、ステートマシンは特殊なケースです。

それは私が1ページ以上の長さであった多くのルーチンを見たことがないということではありません。平均および平均以下(定義上、すべてのプログラマーの半数が平均以下です!)CおよびC++プログラマーは、キーストロークのドロップで500行の意識の流れを吐き出し、どういうわけか戻ってそれらをクリーンアップすることはできません。カットアンドペーストコーディングが標準であり、サブルーチン呼び出しのオーバーヘッドが多すぎる場合、サブプロシージャにカットされて呼び出される(またはマクロ展開される)代わりに、同じダースの行が半ダースの場所に表示されます高い)。

そのことについては、スケジュールのプレッシャーの下で、私はそれらのいくつかを書きました。

私が始める前にさかのぼると、プログラマーが「ページをめくる」必要がある瞬間にプログラマーの理解が劇的に低下することを決定的に示している膨大な知識があります。ワインバーグの「コンピュータプログラミングの心理学」から始めましょう。 100 SLOCで、リストページを少なくとも1回めくることになります。画面サイズに応じて、エディターを2〜3回スクロールします。 (私はかつて、特定の非常に厄介なコードで作業するために、50行のVGAモードをサポートしていたため、タスクにかなり風変わりなエディターを採用しました。)

モジュール性を強制することが大きな違いを生むというかなりの証拠を見てきました。従来のFORTHの実装では、長い意識の流れのコードを書くことが不可能になるため、モジュール化とリファクタリングが必要になります。 FORTHプログラマーは、物事を消化しやすいチャンクに分割することを余儀なくされており、それが大きな違いを生むようです。 (注:歴史上2番目のFORTHプログラマーであるElizabeth Ratherは、これについて私に同意しません。)

コードを「折りたたむ」(ブロックを折りたたむ)ことを可能にする最新のIDEが、この人間の制限を回避できるかどうかを尋ねられることがあります。私は研究を見たことがないので、それに対処することを目的とした研究は疑わしいと思います。どのような背景の人々が何人研究に参加していたか知りたいのです。また、実際にそのようなIDEが実際に使用されているのを見たことがありません。(古いRational R1000 Ada開発システムの1つしか聞いたことがなく、ずっと前に恐竜の墓地に行きました。 。)

「100SLOC」はおそらくガイドラインですが、1000-SLOCスピューをデバッグしなければならなかった無数のソフトウェアエンジニアの血で書かれたガイドラインの味があります。 (そこに行って、それをやったら、Tシャツは欲しくない。)灰色のひげが「GETOFF MY LAWN!」と叫ぶのを防ぐためだけなら、おそらくそれに従うことをお勧めします。あなたに。

4
John R. Strohm