ニュー即ブログν

ニュー即ブログν

この記事をシェアする!

おまいらが目撃した「絶望的なソースコード」どんなのがある???

この記事をシェアする!

Image - http://ln.newsoku.blog/2KA7ypg
Image - http://ln.newsoku.blog/2KA7ypg
1: 2018/10/31(水) 11:45:57.78 ID:nUxs9tl80 BE:422186189-PLT(12015)

#!/bin/bash
function f() {
sleep “$1”
echo “$1”
}
while [ -n “$1” ]
do
f “$1” &
shift
done
wait

https://monobook.org/wiki/%E3%B9%E3%AA%E3%BC%E3%97%E3%BD%E3%BC%E3%88


2: 2018/10/31(水) 11:46:42.79 ID:4qAgK6zQ0
画面描画クラスが3万行あった

3: 2018/10/31(水) 11:47:07.24 ID:8J18AdgH0
10 MOTOR : GOTO 10

4: 2018/10/31(水) 11:47:16.48 ID:OVnNcVZB0

kinou1
kinou2
kinou999

関数名だぜ?

12: 2018/10/31(水) 11:52:50.97 ID:KrSf/gyW0
>>4
何かあったら全部自分で面倒を見る、という覚悟だな

44: 2018/10/31(水) 12:14:55.33 ID:NXp4qEmO0
>>4
普通 func だよな

95: 2018/10/31(水) 13:42:48.62 ID:7eNX02YB0
>>4
こういうのって他の人が理解できないようにわざとやってんのかね?

101: 2018/10/31(水) 13:53:59.82 ID:gQOJRX2Z0
>>95
自分しかメンテできないようにして客を縛る高等テクニック。
ジョブセキュリティとも呼ぶ。
だが上手くやらないと自分もメンテできなくなる諸刃の剣。

103: 2018/10/31(水) 13:55:36.79 ID:v6UsUN2r0
>>101
作ったらあとヨロシクってしたいわ

104: 2018/10/31(水) 13:56:15.59 ID:fv+WqPK50

>>95
「他社(の派遣)さんにこのメンテは無理ですよ」とアピールして、自分の契約を半永久的に延ばすテク

ただ、自分が逃げ出したいときは足枷になって逃げ出せないという

100: 2018/10/31(水) 13:53:39.35 ID:tDI5N9DN0
>>4
おそらく仕様書に書いてある「機能1、機能2・・・」というのをそのまま実装しようとしたんだろう。
後から保守することを何も考えていなかったんだろうな。仕様書が残っていれば一応追いかけられるが、
どこかにいってしまうと悲惨なことになる。
5: 2018/10/31(水) 11:48:00.46 ID:oFCqkQrC0
function ログイン(){
}

6: 2018/10/31(水) 11:48:32.84 ID:rCz48hBo0
//この処理を消すな

7: 2018/10/31(水) 11:48:47.60 ID:siKfB4kt0
とあるシステムの一部分のソースだけでC#のファイルが1万超えてて震えた

10: 2018/10/31(水) 11:50:52.67 ID:rCz48hBo0
>>7
1万行じゃなく1万ファイル?

11: 2018/10/31(水) 11:51:35.33 ID:Ec9YB1ju0
>>7
そこまで行くと、作った奴が凄いなと褒めたくなるなw

8: 2018/10/31(水) 11:49:43.06 ID:ZJmCHVXd0
if文のインデントだけで80文字超えて改行

14: 2018/10/31(水) 11:54:39.60 ID:mSVJ8Kpi0
さっぱりわからんけどすごそう

15: 2018/10/31(水) 11:54:54.93 ID:3Cch75DY0
コメントで、汚いソースでゴメンね!ってあった

21: 2018/10/31(水) 11:59:53.13 ID:yUeqTaYe0
Axsis2でコード生成したら3万行の
コードが吐き出されたでござる。

引用元
http://hayabusa9.5ch.net/test/read.cgi/news/1540953957/

13: 2018/10/31(水) 11:54:05.90 ID:ytJ6BinA0

36: 2018/10/31(水) 12:10:03.03 ID:5juZ2CAX0
>>13
楽天の社長?
プログラマだったの?

41: 2018/10/31(水) 12:13:21.85 ID:/8Gwspff0
>>13
なんでこんな演算してるんだ

105: 2018/10/31(水) 13:56:39.05 ID:tDI5N9DN0
>>13
創業の頃、プログラマが1人しかいなくて手伝ったときのものだな。
三木谷らしいひどいソースだ。

115: 2018/10/31(水) 14:14:11.58 ID:2okjYsHt0
>>13
楽天のwebページみたいなソース

16: 2018/10/31(水) 11:55:13.85 ID:BPS7rBpx0

ループの外でクラス構築して
ループの中でそのクラスに値をListに追加し続けてるソース

そのコードを書いたバカの一言
「リストをダンプすると全部同じ値なんですよ、何でなんですかね?」

20: 2018/10/31(水) 11:58:56.09 ID:yUeqTaYe0

>>16
ループの外でクラス構築して
ループの中でそのクラスの値をListに追加し続けてるソース

だろ?

28: 2018/10/31(水) 12:05:38.11 ID:BPS7rBpx0

>>20
いやこういう糞ソース

A a = new A()
List list = new ArrayList()

for (結果のレコード : dbの検索結果) {
a.set(結果のレコード)
list.add(a)
}

40: 2018/10/31(水) 12:11:18.56 ID:KDUyGUww0
>>28
ちょっと考えないと何がダメなのかわからなかった

106: 2018/10/31(水) 14:02:02.24 ID:tDI5N9DN0
>>28
Listを配列にして、forループの中で配列に順にレコードを追加するようにしていれば正解だったのかな。

108: 2018/10/31(水) 14:05:03.10 ID:v6UsUN2r0
>>106
これは参照型理解してないのやろ

112: 2018/10/31(水) 14:11:20.41 ID:BPS7rBpx0
>>106
いやループの中でa を newすんのが正解
あんたこれ書いたバカと同じ位のバカだわ

119: 2018/10/31(水) 14:22:18.83 ID:tDI5N9DN0
>>112
それはわかってるけど、データが表示用で1画面に納まる程度だったら、最初に固定で配列を確保して
forの中でそれに代入すればいいし、実行速度もその方が早い。
代入するデータ数が全く不明な場合はforの中で確保するしかないが、
もしメモリに入らないくらい膨大なデータ数だったらたとえコードが動いてもヒープ領域オーバーで止まる。
単体テストで少ないデータを使ったときは正常に動くが、本番稼働で大量のデータを処理しようとしたときに止まったら
バグ取りで徹夜することになる。
こうなりたくなければ最初から処理に応じて最適なメモリ領域を確保してから処理した方が安全確実ですよ。

127: 2018/10/31(水) 14:49:03.84 ID:BPS7rBpx0
>>119
あんな見ただけでマトモに動かないって分かる
糞コードにそんな制約あるわけ無いだろう
ピントが外れ過ぎてアホ丸出しだわw

149: 2018/10/31(水) 15:40:50.06 ID:v4vwkVD10

>>119

ジェネリクスくらい使おうぜwwwww

17: 2018/10/31(水) 11:55:19.26 ID:r4zvGZCF0
コントロール名がデフォルト
19: 2018/10/31(水) 11:56:08.99 ID:eJWG3tWI0
3万行超え

25: 2018/10/31(水) 12:04:15.98 ID:FfrJM+Hn0
>>19
いい加減、行数でコードを評価しようとするのやめなよ、おじいちゃん

64: 2018/10/31(水) 12:32:59.46 ID:n3Ji/Y/l0
>>25
いまだにstep数で見積もり出せって言ってくる某大企業様

22: 2018/10/31(水) 12:00:03.25 ID:fpSFF5xe0
exec “mkdir C:¥データ”

23: 2018/10/31(水) 12:00:03.55 ID:Qx6z7zup0
if(penis == true) {
dead = true;
}

24: 2018/10/31(水) 12:02:19.26 ID:1+Hdtqjo0
元祖スーパーモンキーのあれ

27: 2018/10/31(水) 12:05:33.62 ID:DxHGMlh80
10 A=0
20 A=A+1
30 PRINT A
40 GOTO 20

29: 2018/10/31(水) 12:05:44.34 ID:1XrHBUn60

グローバル変数の名前がa

VSみたいな統合開発環境なんてないから追跡不可能

30: 2018/10/31(水) 12:06:08.17 ID:fpSFF5xe0
if(条件2){
if(条件3){
if(条件4){
if(条件5){
if(条件6){
if(条件7){
if(条件8){
……;
}}}}}}}}

31: 2018/10/31(水) 12:06:45.97 ID:SLc3qNAS0
タブと2、4文字インデントが混在してる

107: 2018/10/31(水) 14:04:07.06 ID:tDI5N9DN0
>>31
cbで一気に整形してしまえ

32: 2018/10/31(水) 12:07:36.68 ID:1Ar8Z5/O0

33: 2018/10/31(水) 12:08:02.00 ID:hHaT4VVy0

本当は効率やメンテナンスを考えて処理を関数化すべきなんだろうが
あまりにも納期にまで時間なくてif文大量に書いた
引き継ぎの人、ごめんな

でも1機能あたりシェルスクリプト1万行書いてた隣のチームよりは優しいと思うから許して

37: 2018/10/31(水) 12:10:37.82 ID:G9qsSK7z0

上の見てると俺まだ楽なんだなぁ

設計書なしで、3000行のファイル、うち2/3がデッドコード
関数化してなくて重複処理多すぎ
保守すんのめんどくさい

38: 2018/10/31(水) 12:11:06.72 ID:N0ZGX2tr0

1から10まで足した答えを印字するプログラム

PRINT ”55”

39: 2018/10/31(水) 12:11:16.71 ID:NXp4qEmO0
//なぜかこれをやらないと動かない?

46: 2018/10/31(水) 12:15:25.76 ID:K/dnnotQ0
コメントが見当たらない

48: 2018/10/31(水) 12:16:57.63 ID:Wv0SxeBs0
1クラスに何千行も書かないでくれ

59: 2018/10/31(水) 12:28:12.29 ID:YimmOUEx0
ファイルを開いたらエディタがフリーズ(1クラスがでかすぎ)

68: 2018/10/31(水) 12:36:51.56 ID:8j7qVduS0
VBでtempA,tempB,tempC…がグルグル回ってるソースでよくよく調べてみると
tempAが途中でtempaに生まれ変わって動いてた

70: 2018/10/31(水) 12:38:44.65 ID:O3iF2eK+0
変数名関数名をdo、go、toの組み合わせに変換してみよう。もちろん予約語は除いて。

73: 2018/10/31(水) 12:43:04.37 ID:u7TOA6Us0
業務上の仕様通りに書けばいいのに、
意地でも三項演算子使ったり、
変な変換かまして行数減らしたがるアホは死んで欲しい

79: 2018/10/31(水) 12:54:12.71 ID:yeuX0xFh0
if (a = b) { /* ==のはずだがココは通らないのかも */

96: 2018/10/31(水) 13:44:30.51 ID:8kLg/W8q0
ぬるぽ

97: 2018/10/31(水) 13:46:45.27 ID:NYwklrJS0
がっ!!

1
コメントをどうぞ!

1
0 このコメントに返信
0
 
1
新しい順 古い順 評価順
名無し@ニュー即

>>112
ループごとに毎回インスタンス化するのって逆にどうなのって思うけどな
クラスのコンセプトがわからんからなんとも言えんけど

   

ピックアップ!