X



絶望的なソースコード、みたことある?
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@涙目です。(北海道) [US]
垢版 |
2018/06/27(水) 13:14:49.82ID:niXxiq2x0?PLT(12015)

中級者病(読み:ちゅうきゅうしゃびょう)とは、プログラミングなどを学ぶ際に、とくに中級者が陥りやすい精神疾患のことである。

概要
初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に
精通し、また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。

すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねば
ならないという思い込みが発生する。そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザイン
パターンを適用しようとしだすのである。

その結果、
* 大量のクラス
* 迷路のような変数渡し
* 底なしに深いネスト

などといった凄い(ただし誰も理解できない)ものが生まれる。

また、条件分岐に多段の三項演算子を乱用するなどの症状も多く見受けられる。
最終的には第三者にとって読みにくい保守性の悪いスパゲッティコードが生成されることになる。

職業プログラマーにおいて中級者病の症状が発症すると、仕様書の作成や単体テストなどの工程を省き、
「○○日で完成させた」などと工期の短さを自慢するようになる。
さらに、そのような手抜きを前提とした見積書を作り、ライバル他社のお硬い見積書に対して
「あそこの会社ボッタクリっすねぇw」などと営業しだすことが多い。

中級者病は教育環境に依存すると言われており、とくに教育した人間が悪いと好発しやすいと言われている。
軍事や医療、金融などの世界では新入社員教育の一環として中級者病を防ぐ目的で「保守性」と「堅牢性」を第一に叩き込まれる。

なお、プログラミングしていて一番楽しい時期でもある。

http://monobook.org/wiki/%E4%B8%AD%E7%B4%9A%E8%80%85%E7%97%85
0004名無しさん@涙目です。(茸) [US]
垢版 |
2018/06/27(水) 13:15:47.32ID:rFI0muMB0
富士通ではよくある
0005名無しさん@涙目です。(北海道) [ニダ]
垢版 |
2018/06/27(水) 13:16:46.32ID:gbCUnFIQ0
言語の構文はわずかに例外が有るにしろ、
コードをシンプルで分かりやすく書くことが出来るように 作られたもので、
バージョンが上がると追加される機能っていうのはそれを更に良くするもの。

という当たり前のことから考えると、
問題ない機能を「俺が知らないから」「馬鹿が知らないから」という
理由で禁止する行為は、コードをクソコードに仕上げることになる。

もっと最悪なのが、俺がこれ以上勉強したくないから
他の人も使うの禁止!と言い出すリーダー。
0006名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:17:23.96ID:muDLQhKq0
/* おまじない */
0011名無しさん@涙目です。(茸) [ニダ]
垢版 |
2018/06/27(水) 13:18:32.99ID:/B0ED6/f0
if
 if
   if
   if
    if
     if
      if
0013名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:18:55.57ID:muDLQhKq0
>>5
日本はコンピューターサイエンスの学位すら無い奴がプログラマでございしてるから際限なくレベル落とすことになる
0016名無しさん@涙目です。(大阪府) [ニダ]
垢版 |
2018/06/27(水) 13:19:34.39ID:32W6GuEb0
構造体名に日付が入っている

// struct Hoge_20070920{
struct Hoge_20081010{
}
0017名無しさん@涙目です。(庭) [JP]
垢版 |
2018/06/27(水) 13:20:14.85ID:N5XKWUmZ0
「AをBに代入する」とかいう訳の分からないコメントが全行に書かれてるソースコード
そんなの見りゃ分かる。なんでそうしたのかをコメントに残せよ!
0021名無しさん@涙目です。(静岡県) [US]
垢版 |
2018/06/27(水) 13:21:03.67ID:Q94ld3R00
>>4 ww
富士通の方ですか?
0023名無しさん@涙目です。(東京都) [US]
垢版 |
2018/06/27(水) 13:21:38.69ID:UD0y2ArS0
空飛ぶスパゲッティモンスターコード教
0027【B:78 W:62 H:92 (A cup)】 (東京都) [ニダ]
垢版 |
2018/06/27(水) 13:22:09.50ID:TzJ6Rq/z0
ワンライナー自慢
0028名無しさん@涙目です。(庭) [US]
垢版 |
2018/06/27(水) 13:22:18.86ID:Jv7Kqzt/0
古いシステムで言語の全くわからんのを見るとほぇ〜って感じにむしろ感心する
0029名無しさん@涙目です。(東京都) [IT]
垢版 |
2018/06/27(水) 13:22:35.33ID:cK3g8xdr0
どこにも使用していないのに削除すると誤動作を起こしてしまう謎の文字列変数
0030名無しさん@涙目です。(静岡県) [US]
垢版 |
2018/06/27(水) 13:22:42.02ID:Q94ld3R00
クラスも上手く使えば便利極まりない道具なんだけどね。
人のプログラムだと追っかけるのが面倒だよね。
0032名無しさん@涙目です。(神奈川県) [US]
垢版 |
2018/06/27(水) 13:23:02.43ID:z7gzCkpU0
>>17
0033名無しさん@涙目です。(東京都) [US]
垢版 |
2018/06/27(水) 13:23:04.37ID:VA1H9jJf0
>そしてHello Worldにまで崇高なオブジェクト指向や壮大なデザイン
>パターンを適用しようとしだすのである

見てみたいw
0036名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:23:41.56ID:muDLQhKq0
>>16
常にメモリ番地を直接参照してれば何とかなるな
0040名無しさん@涙目です。(チベット自治区) [US]
垢版 |
2018/06/27(水) 13:24:42.74ID:KASc5Lzb0
やべ、バイナリ開いちゃったと思って
よく見たらソースコードだった
0042名無しさん@涙目です。(空) [US]
垢版 |
2018/06/27(水) 13:25:06.45ID:zKsUwUOv0
ネストはまだいい
gotoでスパゲッティーは死ぬぞ、追ってたら
0045名無しさん@涙目です。(東京都) [KR]
垢版 |
2018/06/27(水) 13:26:11.84ID:dm0dlpcX0
>>25
returnする前に一度使う分には行数減るしいいだろ。三項演算子そのものが人気ないなら、エルビス演算子なんか生まれてないよ。
指摘されてるのは、それがさらに分岐するパティーン。
0046名無しさん@涙目です。(愛媛県) [FR]
垢版 |
2018/06/27(水) 13:26:42.89ID:ZMCIO02I0
>ほぼどのようなソースコードでも読める程度にプログラミング言語に
>精通し、また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期

この時期に

>大量のクラス
>迷路のような変数渡し
>底なしに深いネスト

こんなことするわけない。もししてるとしたらデザインパターンも全く理解してないし
言語に精通もしてない。
0048名無しさん@涙目です。(茸) [US]
垢版 |
2018/06/27(水) 13:27:30.41ID:6dQRInmR0
ポインタでポインタを指定
0049名無しさん@涙目です。(静岡県) [US]
垢版 |
2018/06/27(水) 13:27:34.76ID:Q94ld3R00
gotoで一気に抜ければ楽なのに、Cの初心者は意地でも goto を使わないので余計見づらくなる。
0051名無しさん@涙目です。(庭) [ニダ]
垢版 |
2018/06/27(水) 13:28:13.22ID:z7AlSXFL0
>>11
それくらいなら単純で分かりやすいやろ
0053名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:29:01.64ID:muDLQhKq0
>>25
javascriptのpromise〜thenを無名関数でとか見たら発狂しそう
0055名無しさん@涙目です。(京都府) [SK]
垢版 |
2018/06/27(水) 13:29:39.23ID:nbCEm4TU0
同意過ぎてワロタ
一番楽しい時期だよな
0057名無しさん@涙目です。(岩手県) [US]
垢版 |
2018/06/27(水) 13:30:33.18ID:LSLZmvun0
五次元テーブル見た時はぶっ倒れそうになった
オレの脳みそでは三次元までしかイメージできん
0058名無しさん@涙目です。(大阪府) [ニダ]
垢版 |
2018/06/27(水) 13:30:40.73ID:32W6GuEb0
デグレ試験工数減らすために共通部処理に手を入れるのをためらい、まるまる別関数としてコピーする、をくりかえして同じようなコードがあちこちにあり収集がつかなくなってるソース
0059名無しさん@涙目です。(dion軍) [CN]
垢版 |
2018/06/27(水) 13:30:46.35ID:sZwp6XvT0
専門用語と外来語を連発して俺は頭いいを誇示するやつほどスパゲティ
0061名無しさん@涙目です。(dion軍) [ニダ]
垢版 |
2018/06/27(水) 13:32:13.25ID:iLrZW0dA0
要するに技術者の大半はこの経験あるということか
無能集団だな
0065名無しさん@涙目です。(空) [US]
垢版 |
2018/06/27(水) 13:33:04.03ID:ezHVL6E/0
職業プログラマーは意固地、というか自分の考え以外を全部クソ扱いする印象ある
あんまり相手したくないな
0067名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:34:43.30ID:muDLQhKq0
>>62
worldオブジェクトにメッセージ渡しするべきや
0069名無しさん@涙目です。(庭) [HK]
垢版 |
2018/06/27(水) 13:35:32.07ID:zkZ2u4lS0
俺が新人時代に書いた某チェーン店のPOSレジのソース
システムリプレイスで改修する必要があったがあまりにも酷くて
既に営業に移動になっていた俺が開発に召喚されたw
0070名無しさん@涙目です。(愛媛県) [FR]
垢版 |
2018/06/27(水) 13:35:41.52ID:ZMCIO02I0
>>50,52
ほぼどのようなソースコードも読めて
デザインパターンも「理解」してるんだぞ。

それでそんなコード書くわけないだろ。もしそんなコード書いてるなら上でいったように
精通してないしデザインパターン理解もしてないわ。
0071名無しさん@涙目です。(茸) [US]
垢版 |
2018/06/27(水) 13:35:46.66ID:04EwU/zl0
>>5
新規の開発なら確かにクソリーダー
既存の改修なら、既存部分の置換や再テストをスコープ外にするためにそういう設定することはある
0073名無しさん@涙目です。(新疆ウイグル自治区) [SE]
垢版 |
2018/06/27(水) 13:36:15.13ID:muDLQhKq0
>>50
まあド素人がstatic扱うのは危険極まりないないからな
逆に大規模システムでstatic適切に使えて無いのは性能のことを何も考えてない証
0075名無しさん@涙目です。(新潟県) [BR]
垢版 |
2018/06/27(水) 13:36:16.24ID:/Yvrg6yI0
俺の目の前の画面に毎日表示されてる
0077名無しさん@涙目です。(庭) [ニダ]
垢版 |
2018/06/27(水) 13:36:31.91ID:ERuJFuwj0
変数名関数名を
dotoとかgogoとか
全部dtgoの組み合わせに置換してから引き継ごう
0079名無しさん@涙目です。(茸) [ニダ]
垢版 |
2018/06/27(水) 13:39:00.07ID:4HOKcTjw0
>>25
書き方による
a=(b<5)?(b-2)
:(b+32)

のようにif文のように分かりやすく書く
必ず()で囲む(演算優先がおかしいため)
長くなりそうだったら諦める

うまく使うと鬼のようなif文の連続から逃げられる
0080名無しさん@涙目です。(東京都) [US]
垢版 |
2018/06/27(水) 13:39:43.32ID:3DXEKnnT0
このスレ、なんか悲しい空気が流れてる
0083名無しさん@涙目です。(庭) [ニダ]
垢版 |
2018/06/27(水) 13:41:37.31ID:ERuJFuwj0
チューリングマシン用加算プログラム書いたことないやつは他人のコードにとやかく言う資格ないと思う
お前は「書ける」だけ。「設計」はできないんだ
0088名無しさん@涙目です。(庭) [HK]
垢版 |
2018/06/27(水) 13:45:20.29ID:zkZ2u4lS0
>>83
自称プログラマの殆どはコーダーだから
0091名無しさん@涙目です。(庭) [SE]
垢版 |
2018/06/27(水) 13:46:21.66ID:XhgWuizC0
wordpressのソースコードとか絶望的だと思うぞ個人的には
0097名無しさん@涙目です。(庭) [KR]
垢版 |
2018/06/27(水) 13:52:26.69ID:rNNpRiaL0
>>8
あるある
■ このスレッドは過去ログ倉庫に格納されています