絶望的なソースコード、みたことある?
■ このスレッドは過去ログ倉庫に格納されています
中級者病(読み:ちゅうきゅうしゃびょう)とは、プログラミングなどを学ぶ際に、とくに中級者が陥りやすい精神疾患のことである。
概要
初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に
精通し、また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。
すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねば
ならないという思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザイン
パターンを適用しようとしだすのである。
その結果、
* 大量のクラス
* 迷路のような変数渡し
* 底なしに深いネスト
などといった凄い(ただし誰も理解できない)ものが生まれる。
また、条件分岐に多段の三項演算子を乱用するなどの症状も多く見受けられる。
最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。
職業プログラマーにおいて中級者病の症状が発症すると、仕様書の作成や単体テストなどの工程を省き、
「○○日で完成させた」などと工期の短さを自慢するようになる。
さらに、そのような手抜きを前提とした見積書を作り、ライバル他社のお硬い見積書に対して
「あそこの会社ボッタクリっすねぇw」などと営業しだすことが多い。
中級者病は教育環境に依存すると言われており、とくに教育した人間が悪いと好発しやすいと言われている。
軍事や医療、金融などの世界では新入社員教育の一環として中級者病を防ぐ目的で「保守性」と「堅牢性」を第一に叩き込まれる。
なお、プログラミングしていて一番楽しい時期でもある。
http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85 言語の構文はわずかに例外が有るにしろ、
コードをシンプルで分かりやすく書くことが出来るように 作られたもので、
バージョンが上がると追加される機能っていうのはそれを更に良くするもの。
という当たり前のことから考えると、
問題ない機能を「俺が知らないから」「馬鹿が知らないから」という
理由で禁止する行為は、コードをクソコードに仕上げることになる。
もっと最悪なのが、俺がこれ以上勉強したくないから
他の人も使うの禁止!と言い出すリーダー。 >>5
日本はコンピューターサイエンスの学位すら無い奴がプログラマでございしてるから際限なくレベル落とすことになる 構造体名に日付が入っている
// struct Hoge_20070920{
struct Hoge_20081010{
} 「AをBに代入する」とかいう訳の分からないコメントが全行に書かれてるソースコード
そんなの見りゃ分かる。なんでそうしたのかをコメントに残せよ! 逆に直接関わる案件は絶望的なのしか見たことない
海外の商用エンジンとかOSSのコードみる機会あると心が洗われる メンバ変数が複雑に絡み合いすぎてグローバル変数より収拾がつかなくなってるヤツ 三項演算子ってこれか
<条件式> ? <真式> : <偽式>
確かに「しね」だわ 古いシステムで言語の全くわからんのを見るとほぇ〜って感じにむしろ感心する どこにも使用していないのに削除すると誤動作を起こしてしまう謎の文字列変数 クラスも上手く使えば便利極まりない道具なんだけどね。
人のプログラムだと追っかけるのが面倒だよね。 >そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザイン
>パターンを適用しようとしだすのである
見てみたいw >>11
switch文のcase内で分岐してるよりは追いやすくていい >>16
常にメモリ番地を直接参照してれば何とかなるな やべ、バイナリ開いちゃったと思って
よく見たらソースコードだった >>33
MVVM信者なんかが一時期やらかしてたな。 ネストはまだいい
gotoでスパゲッティーは死ぬぞ、追ってたら 関数の戻り値受けずに関数呼んでヌルポで落ちる糞ソース >>25
returnする前に一度使う分には行数減るしいいだろ。三項演算子そのものが人気ないなら、エルビス演算子なんか生まれてないよ。
指摘されてるのは、それがさらに分岐するパティーン。 >ほぼどのようなソースコードでも読める程度にプログラミング言語に
>精通し、また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期
この時期に
>大量のクラス
>迷路のような変数渡し
>底なしに深いネスト
こんなことするわけない。もししてるとしたらデザインパターンも全く理解してないし
言語に精通もしてない。 プロジェクトが肥大化するとオブジェクト指向の絡み合いはグローバル変数よりヤバくなる gotoで一気に抜ければ楽なのに、Cの初心者は意地でも goto を使わないので余計見づらくなる。 >>46
いや、多いよ
否定すると「staticおじさん死ね」とか煽られる >>46
デザインパターン覚えたてはマジでヤバイぞ >>25
javascriptのpromise〜thenを無名関数でとか見たら発狂しそう 五次元テーブル見た時はぶっ倒れそうになった
オレの脳みそでは三次元までしかイメージできん デグレ試験工数減らすために共通部処理に手を入れるのをためらい、まるまる別関数としてコピーする、をくりかえして同じようなコードがあちこちにあり収集がつかなくなってるソース 専門用語と外来語を連発して俺は頭いいを誇示するやつほどスパゲティ >>47
名前空間分ける意味がわからなくなるよな…
でも、今はIntelliJとその仲間達が全部追ってくれるんやで。 要するに技術者の大半はこの経験あるということか
無能集団だな >>33
console.stream.out(speak.greeting.hellow("world").toText()) 職業プログラマーは意固地、というか自分の考え以外を全部クソ扱いする印象ある
あんまり相手したくないな >>60
inteliJを使ってると
楽できすぎて堕落する >>62
worldオブジェクトにメッセージ渡しするべきや >>17
これを強いられて絶望した
もうプログラムとかやりたくない 俺が新人時代に書いた某チェーン店のPOSレジのソース
システムリプレイスで改修する必要があったがあまりにも酷くて
既に営業に移動になっていた俺が開発に召喚されたw >>50,52
ほぼどのようなソースコードも読めて
デザインパターンも「理解」してるんだぞ。
それでそんなコード書くわけないだろ。もしそんなコード書いてるなら上でいったように
精通してないしデザインパターン理解もしてないわ。 >>5
新規の開発なら確かにクソリーダー
既存の改修なら、既存部分の置換や再テストをスコープ外にするためにそういう設定することはある Cのコードで、
変数の初期値が全部全角の2バイト文字で書いてあった時には
なんで動いてるのか本当に謎だった。 >>50
まあド素人がstatic扱うのは危険極まりないないからな
逆に大規模システムでstatic適切に使えて無いのは性能のことを何も考えてない証 >>61
そうなんだよ、その無能が世の中のいろんなシステム作って更新してるんだよ。 変数名関数名を
dotoとかgogoとか
全部dtgoの組み合わせに置換してから引き継ごう 一時期陥ったよ
ファイル小分けしすぎて結局わけわかんなくなるやつ
整頓したけりゃ一つのソースコード書くべきなんだ >>25
書き方による
a=(b<5)?(b-2)
:(b+32)
のようにif文のように分かりやすく書く
必ず()で囲む(演算優先がおかしいため)
長くなりそうだったら諦める
うまく使うと鬼のようなif文の連続から逃げられる 自称出来る系の書いてるコードは独自理論が組み込まれてて本当に厄介 チューリングマシン用加算プログラム書いたことないやつは他人のコードにとやかく言う資格ないと思う
お前は「書ける」だけ。「設計」はできないんだ >>83
加算器と簡単な命令デコード回路ならいまでも設計してる ・名前が変
・コメントが変(ない)
は本当にきつい >>82
嘘ばっかの糞コメントがちょいちょい出てくる位なら
いっそコメントなんか無い方が分かりやすかったりする >>83
そうそう、そんな感じの人がいるのがフラグだよね wordpressのソースコードとか絶望的だと思うぞ個人的には templateにハマって地獄を見る
C11のtemplateで更に地獄 >絶望的なソースコード、みたことある?
いま書いてるよ ■ このスレッドは過去ログ倉庫に格納されています