SSブログ

難解なプログラムで玉砕 [プログラミング]

つい先日まで、難解なプログラムに取り組んでいた。
全体を見てもそんなに長いわけではないが、解読に難航を極め、最終的には細かいところはわからないままに終わってしまった。
負けである。書いたのは若いお姉ちゃんらしいが、あれを理解できるのは相当の天才に違いない。

まず、とにかく何でもグローバル変数。
グローバル変数を引数にして関数を呼び、関数の仮引数も同じ名前。
関数の戻り値を受け取ってから、それを代入してるのも結局同じ変数。
ローカル変数がグローバル変数を隠蔽してて、でも最終的にグローバル変数に入る。
もう、わけわからん。
関数の中で呼んでる関数の中でグローバル変数を書き換えてるので、いつなんどきも油断することはできない。
変数や関数につける「名前」も一貫性がなくて、その場で適当に付けてる感じ。
FOO を BAR して INSERT する関数が FOO_BAR_INSERT だったとしても、FOO を BAR して UPDATE する関数が FOOBAR_UPDATE だったりする。
#「_」を省略しないで欲しい(もしくは、いつも省略して欲しい)
それ以前に、FOO_BAR_XXX だったり BAR_FOO_XXX だったり FOOs_BARs_XXXだったり、
単語の並び順や複数形にするパターンとかも、そのときの思いつきのようで・・・
(あまり言っちゃうと、オマエモナーって言われるだろうけど、僕は少しは気にしてる)

随分以前に「名前付けに関する本があると良いのに」って書いたなぁ。
http://blog.so-net.ne.jp/nakagami/2005-12-08

動詞の使い方もおかしい。
RDBMS から(これまた)グローバル変数に値を取得している関数が、「GET_XXXXX」
「変数にセットしてるんだから SET_XXXXXだろうが!」とつぶやかずにはいられない。
でも、本当のことをいうと、こういう↑セリフを吐いたのは、15年で1度や2度の話ではない。

オブジェクト指向とか DI とかアジャイルとかいっても、僕の周りでは、何故か 20 年以上前から同じことの繰り返し。ドメインモデルか、トランザクションスクリプトかなんて、別世界の話だ。
http://d.hatena.ne.jp/higayasuo/20070621#1182389525

そういえば、RDBMS から取って来た、相互にあまり関係ない値が何故か配列変数に入ってる。5つくらいしか要素がないから、せめて別々の変数にすればいいんじゃなかろうか。きっと、今頃、お姉ちゃんも 0 番目に入ってる値がなんだったかわからなくなってるだろう。

悩ましいのは、それでも仕様どおりに動いているので、世間一般には不良品とは言えないってこと。ソースの良し悪しは、最終的には好みにもよるし、絶対グローバル変数を使っちゃいけないってわけでもないし・・・
プログラムの読みやすさを計算ロジックで数値化できればいいんだけど。


nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0