絶望的なソースコード、みたことある?
■ このスレッドは過去ログ倉庫に格納されています
中級者病(読み:ちゅうきゅうしゃびょう)とは、プログラミングなどを学ぶ際に、とくに中級者が陥りやすい精神疾患のことである。 概要 初級者から中級者へ昇格する時期は、ほぼどのようなソースコードでも読める程度にプログラミング言語に 精通し、また偉いプログラマーの提唱したデザインパターンも一通り理解したくらいの時期である。 すると、プログラミング言語の持つあらゆる機能と、偉いプログラマーの提唱するあらゆる技術を使わねば ならないという思い込みが発生する。そして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で更に地獄 >絶望的なソースコード、みたことある? いま書いてるよ >>8 Cでよくあった メモリ管理できてないのがげんいんってのが多い 同じスコープ内で大文字小文字だけが違う同じ名前の変数が複数あってそれぞれ別の使われ方をしている。 エディタ殺しだなあ。 >>102 一応それ規約あるんだよな… あるよな? >>91 前にちょっと見たことがある、で、そっと閉じた。 条件式の中に条件式書く奴いてめんどかった デバッグ効率も考えて書け >>17 逆にコメントを書くとそのメンテに工数取られるから書くなっつうレビュアーがいたな 改行空行も無駄だから省きました!レビューお願いします!ってかましたら音をあげたがw レガシーになりそうなシステムでは、残すべきドキュメントは仕様書じゃなくて議事録なんだよなあ 仕様なんかはソース読めば起こせるけど、なんでそんな仕様になってるかはわからんからなあ 議事録残ってると、当時の誰の判断でなんでこんな仕様になってるかわかって助かる 元号対応してないシステムとかも、予算なくて後回しとか議事録にあるだけで助かるわ a=b // コンパイラのバグのため とか 1000カラム近い正規表現 とか ifで分けてるけどそれぞれのブロックが数百行あって殆ど同じ処理 とか 10Mの.cppファイルに関数が3つ 内一つはmain() ていうか全体の99%がmain() goto文で飛ぶ先は三重ループの中 _sleep(100); //消すと動かなくなる! >>104 汚い(スコープが広い)なりに、一応思想的に統一はされてるんだけどね あれのメリットは、globalに各種apiクラスのインスタンスが載ってるって安心感 デメリットは、globalが超汚染されてるって絶望感 まぁプラグインとかです組む時は、おもいっきりモダンな構成にすれば溜飲は下げられるw >>103 あるわけがない。 cntとcountが同居していることもあるぞ。 INC 1,XHL INC 1,A DEC 1,XBC OR XBC,XBC J NZ,RCVCH0 RET 関数やクラス、メソッド、変数名が適当なのも困る aaa bbb とか手抜きすぎだろ ドブス嫁ほったらかして地元テニサーで知り合った中学校の女性教師の愛人と浮気ハメハメ交尾 してる田舎零細の中卒エテ公社長も、絶望的な知能の低さですね >>116 大文字小文字だけじゃなく表記も揺れてんのかよw がんばれとしかいえねぇ… 全部グローバル変数のCソースで絶望してたが、ただのJavaScriptと思うようにした もう30年は経つのに未だに人材育成のノウハウ無いって プログラマー業界ってヤバくね? >>125 日本のソフト業界の現状しって転職する人が多いですからねぇ(´・ω・`)私もメーカーやめて個人塾やってます 厨二病なネーミングルール アニメワード基本のネーミングルール >>130 gitとかsvnで管理してんのに // 2018-xx-yy del start // // // 2018-xx-yy del end とかな >>137 まぁ大概コミットコミットは「◯◯システム改修対応」で終わりとかだったりするな そして、コード無いでバージョン管理させるタイプのPJは、看板コメントに改版履歴残すのが鉄板 めんどくせぇったらないわ >>11 $test = ( $name == "hogehoge" ) ? 1 : 0; これよりマシ >>141 俺この書き方結構好きなんだけどな(´・ω・`) >>30 >人のプログラムだと追っかけるのが面倒だよね。 クラスは要件に対してその人がどのような世界観を持っているかを現してるからな。 感動する時もある。 クラスは楽器とか鉛筆やな。センスというか、深い人間に描かせたら芸術になるな。 尤も、大規模なシステムではそういうのは無いけど。 定数クラス、ビジネスロジッククラス、デービークラス、画面クラスとかそんなん。 そっからオリジナルの派生クラスを作っても俺だけ目立つしな。 だいいち、そのオリジナルクラスの名前付けルールが無いから作れんしな。 >>125 育てても3年で辞めていくなら、教えても無駄と気付いてる 1円足りないからとりあえず今月だけ1円足しとく。ってのが4つくらい並んでるんだけど? INC 1,XHL INC 1,A DEC 1,XBC OR XBC,XBC J NZ,RCVCH0 IRET 変えておいてやったぞ>>118 10 DEFINT A-Z 20 PRINT"お好きな飲み物をどうぞ。" 30 INPUT"1.お茶 2.コーヒー 3.ビール 4.高原の岩清水&レモン";A 40 IF A<1 OR A>4 GOTO 30 50 FOR I=0 TO 3 60 IF A=0 THEN PRINT MID$("それで?だから?ふうん。あっそ。",1+I*4,4):END 70 A=A-1 80 NEXT >>141 ちょっとした判定ならそれの方が行数少なくて見やすい 改行とインデントだらけでどうでもいいコメントが大量にあるコードは見ててうんざりする 横幅の広いディスプレイで書かれたコードを小さいディスプレイで見たときもうんざりする >>150 まぁ規約で禁止されてる場合が多いな 趣味で組む時は使うが仕事で禁止されてる場合は流石にやらんわ 年数と共に仕様変更が入りまくって 変更前のソースはコメントにして残すから 膨大なコメントアウトした過去ソースの合間に本ソースがチラホラあって それがさらにif文ネストの中の奴とかで、コメントアウトしました仕様変更番号もネストしててスクロール何度も上下して うわーー!結局何してんのか今自分が何処に居るのかすら全く分からんとかはあるな。 >>150 メジャーなオープンソースプロダクツのコードでは普通に見る書き方やけどな >>125 効率より村社会 ビジネスより村社会 法律より村社会 それが日本 ザ・ニッポン >>94 だからルールを決めておくんだよ 行頭に?や:があれば単独の式ではあり得ないので直感的に前の行の続きだとわかる c→javaとやってきて pythonはなんか気持ち悪く感じる 何十画面もあるのに1画面1exeになったやつがソフトハウスから上がってきてビビった思い出 画面間のデータの受け渡しはiniファイル 余計なコメント行は不要だが、タブ文字、空白文字で整形しないソースコードはエグいよな。 >>151 画面に沢山チェックボックスがあって、 ロードする際にデービーの値を元にとかで全部に設定していく時とかに使わん? あれをifでやると超絶長くなる時とか。 内容によってデータの運命が変わる際どい判定処理とかにそれ使うと読み間違えるリスクがあるからちゃんと書くけど。 If flg =true then って、=trueまで入れて書くわ。 >>159 VB由来の設計思想引きずったシステムだとよくあるよなそれ 昔は2ちゃんねるに怪しいコードが書き込まれてて ノートン先生(笑)がバンバン反応した お前らがなんの話をしてるのかさっぱりわからんw 昔JUMPでやってたライトウイングで例えてくれ >>157 そんなプロジェクト内で守られるかわからんルール課すよりも最初から三項演算子禁止にしといたほうが早い >>162 マジかw せめてxmlにすれば良いのにw そういう問題ちゃうけど >>159 俺も見たことあるな データの受け渡しはソケット通信だった 何でこんなことにって聞いたらパフォーマンス改善の為とか説明されたけど逆に落ちるよね >>161 代入から計算まで済ませられるから便利だな 方法論としては好きだぞ? ただ、規約に反してまでやろうとは思わん キックスタート時にそんな規約上がってきたら本気で説得に走って訂正させるけどねw てかそれ絡みは、いつも書き方迷うわ 何回Maybeモナド欲しいと思った事か 可読性の高いプログラムを組めるようになるのが、中級者だろ >>161 flg != false じゃないと気持ち悪い コメントに「これこれこーいう仕様だったけど急に変更になって あーだこーだしてるよ&日付 でもまた仕様元に戻ったけど、ほにゃららの部分だけ変更のまま&日付」 みたいな自分で書いたコメントで、「あーー、なるほど!そういうことか!! ありがとう1年前の俺!!」 ってことよくあるよね?(´・ω・`) >>166 画面構成複雑じゃないシステムだとすごく楽なんだよ単純だし ある意味アリだとは思うよ ちなみに、AdobeAirとかFlexでも似たような構成にする時がある。 (最近flexとかairの案件無いな) プログラムなんて日本語で書ける様にしろやw 最適化なんてそれこそAIにやらせりゃいいんだよ 三項演算子読めないヤツは猿 三項演算子で可読性下がるとか言ってるヤツは池沼 >>125 俺が早々に職種替えしたからな あんな業界でずっと最先端おってられねぇ 今は経理だから10年一日のごとし >>168 プロジェクト人数よな。 毎日朝に同期取ったら全国各地から最新ソースが降ってくるようなデカいプロジェクトやったらあり得んもんな。 腕の立つ人間数人だけで大き目のシステム組む時は規約が緩くて楽しい。 お互いのソースが読めるしメンテ出来るし。 あれ、三項演算子みんな嫌いなの? 数値代入くらいならifelseより簡潔でいいと思うんだけど jump命令大杉で窓からjumpしちゃった人なら… >>171 ある。とにかくユーザーからのクレームスタートの場合、なぜこの動きになったのか直ぐ説明出来るからな。 あるある ルーターのプログラム解析してくれって渡されたんだけど、とにかく見たことがない 奇抜な書き方のソースだったもんで、誰が作ったか聞いてみたら、中国人だと なんと言うか「動けばいい」ほんと、これを具現化したソースだった 中国下請けにコーディング任せて大損失くらった話よく聞いたけど、なるほどと思った >>171 あるある 逆に全くコメント入れてなかったりすると自分で本当に作ったのか思い出せないときすらある >>176 プロジェクトは3-5人程度が一番気楽でいいよな いい金にはならないけど… 大規模な奴はそもそもガッチガチだからねぇ規約とか と思ってた時期が俺にもあったけど、割りと自由気ままな大規模pjってのもそれなりにあるんだよなw >>170 静的解析ツールだとtrueとの比較は怒られちゃうね でも人間的にはこっちの方が理解しやすいんだもの 数日前に15年くらい前の自作ツールのExcel VBAコードを見た あちこちのモジュールのパブリック変数にあちこちのモジュールから設定してた 設計が滅茶苦茶で笑ったわ。まさにスパゲッティ そしてモジュール名が"MzrKk"とか"MzrKs"とか理解不能な変数名てんこ盛り… わけわからなくて眩暈がしたわ これでも当時は大真面目にスパゲッティにならないように気を付けて組んでた いつか当時を懐かしみながらリファクタリングしてみようと思う コボラーの書いたVBソースを見てるんだが、COBOLとVBのコラボでクソ汚いコードだw >>177 俺は好きだよ。さすがに三項演算子を入れ子にするのはやめたが 開発が遅れ気味になり中国にオフショア部隊がいる会社に一部発注したら、コメントで「がんばつてください」と書いてあってちょっと笑ってが、思い切りバグだらけで結果開発遅延。 >>158 なぜselfを自分で用意するのか とかね >>191 だれが読んでも同じコードが作られる仕様書にしろ!なんて言う人いるよね それなら最初からコード書いた方が速いという 三項演算子自体を叩いてる奴はプログラミング向いてないぞ 「多段の三項演算子を乱用」は読みづらいから良くないけど >>188 1行目から9行目までのコードを10行目以降に 列が合うようにスペースを入れて調整すれば完璧 コメントに日記が書かれているのだが、 内容が最悪だった piyo(){ ・・・・・・: } bar() { ・・・・・・: } barのが好き 三項演算嫌いな人はラムダ式とかどう捉えてるんだろうか >>177 分岐1つだけで代入値が変わるだけならアリ コピペで多用されると厄介だしプロジェクトで禁止しちゃうのも分からんではないけど >>9 int a = b < c ? c : b; 三項演算子?をリーダーに禁止された 「俺が知らないから」 単純な三項演算子は俺も慣れてるからいいよ。 多段は無理。素直にif使ってくれ >>197 俺はJavaでは上のpiyo、C#では下のbarにしてる >>202 hoge「俺たちを」 fuga「除け者にするなよ…」 三項演算子はネスト地獄のif文より可読性高いから好き issetで判定してるのに、渡される値は空文字が入った変数。phpほんま嫌い >>203 >>197 に言ってくれ ちなみに俺はhoge huga派な プログラマの全員が全員、頭がいいわけでないから、知能の低い方に 合わせて小難しい書き方はやめて単純な書式に統一するのはアリなのかも。 どんな書き方したって、最終的にバグらず仕様どおりちゃんと動いてメンテ やりやすければいいんだしね。 Go言語がそんな思想でおもろかった 外注のソフト屋は絶対に個人のところは使わない。 多少高くてもスタッフが多数いる会社を選ぶわ。 >>205 Webはテキストフォーム入力の世界だからPHPが正しいわ コメントの罠、変数名の罠、上げたらきりがないよね。 tmpという変数があったから一時用なのかと思ってたら、よく見たらtmplでテンプレだったりして混乱した覚えがあるわ。 新宿古着屋の自爆コードでしょうねダイバクショウ いつでもスイッチオーんダイバクショウ >>153 ステップって何?www プログラマの話に素人が口挟まなくていいよwww お前らもっとすごく絶望的なコードの話してくれよ これっぽっちじゃ夜に一人でトイレ行けちゃうよ git使ってるといま自分がどこのブランチにいるのかわからなくなるのは俺がおっさんだからなのか >>46 え・・・精通してないの・・・? そ、そっか・・・仕方無いなぁ、お姉さんが言語に精通させてあげる >>218 そんなんじゃあバックマージとコンフリクト起きまくってそうだな >>218 大丈夫 pushしようとして蹴られたらそれがmasterブランチだから 深く考えるな気楽に行こうw ってか俺もよく迷子になるわ if if if if 30行くらい(縦一画面におさまらないくらい)のコード ← これ else 1・2行くらいのコード endif else 1・2行くらいのコード endif else 1・2行くらいのコード endif eles 1・2行くらいのコード endif >>17 昔の銀行のシステムだと、まず日本語で全部コメント書いてレビューして、 OKが出るとはじめてプログラムに取り掛かるとか。 >>224 その説明がすでにタイプミスしてるという VBAをクラスで実装したら、VBAできます!って人がわけわからんと言ってきたことはある アップデートありきのオンラインゲーム(ソシャゲ含む)全般だな。 2年くらいやって安定してきたから色々直したいけどスパゲティコードすぎて直せないという 開発スタッフのコメントはよく見る >>230 VBAっていうと、アプリケーションイベントで呼んだところから一関数で書くコードが多いんじゃね >>225 現場にコンパイラがあまり無い、あるいは時間がかかる時代の文化だね 開発端末も無いとまずコードを紙に書くところから始まるらしい DBのカラムがtmp1,tmp2・・・tmp10ってあって仕様書には予備としか書いてない 10年の間に改変に改変加えたシステムで古参の作成者なし って状態で全ソースを見て一週間で解析したらお客様にめちゃくちゃ信頼されるようになった ソースコメントでもいいから予備カラム使うときは用途残そう クラスも関数も一長一短、ちゃんと整理されててルールがないと読んでて辛いよな。 >>208 でも個人のほうがスキル高かったりするよね 最近Swiftのせいで行末のセミコロンが打てなくなった; EXCELVBAくらいしか使えない事務マンだけどEXCELVBAのクラスについて説明してるページの少なさ 構造体すらそんなに説明してくれてない >>238 SUZUKIに電話でクレーム入れたら当社は一切関係無いの1点張り >>207 アリとかじゃなくて、そうしないとね 最近の人手不足で未経験者投入のプロジェクトもあるから そのためのコーディング規約 コードを書き始めて最初に学ぶべきなのは、一年後に自分が見て分かるようにコメントを残しておく事の大切さだ そして一年後に、自分が見て分かるようなコメントを残しておく事が重要だと分かるんだ 開発プロセスさえ遵守すれば低脳でもまともなコードが書けると思ってる上司を何とかしたい >>236 プログラムは仕様書はあるけど、プロダクト(ソフト、スマホのアイコンごとの単位)の 内部設計資料は存在しないものが殆ど。だから、プログラムを作る人はプログラムの 中にその内容を記録しておくことが「慣例」になっている。その「慣例」が通じてれば、 次の担当者も前の人が作ったお約束の中で作業ができるし、お客さんも前版と同じ ルールで作られているんだな、と安心できる。 例えば、お金の計算のプログラムで、「足し算」と書いてある処理があるからバージョン 2の足し算処理でもそれを引継ぎで使ってみた。けど、動かしてみると不思議と数字が合わない。 調べてみると、足し算した後に勝手に端数をなくす処理が入っていた。 そういうプログラムが必要なときは、普通プログラマは処理の名前を「端数切捨て足し算」 とする。もしくは、「足し算」と書いてあるところに(この足し算は端数を切り捨てますので注意) と書いておくことが慣例になっている。 >>243 時間が経った後に見たらコメント自体の意味がわからず逆にコードを見直して理解する なんてことも結構あるよなあ ソフトは1日あればできると思ってるハード出身の顧客を消し去りたい >245 お前の中のオレオレ慣例なんてよそじゃ通用しねーよ わけわかんねーこと言ってないで転職して介護とかでもしててね >>117 組み込み屋だってそんな造りはしないよ gotoだって制御時間的によっぽどシビアなコーディング求められる状況でないと可読性悪くするだけだから使わん >>188 それエラーコードの固定値は規則性ないの? あればオフセット値と条件で確認してる変数の値で、一行に出来ないの? >>224 それならgotoを使って条件ネストを一つにするかな。 x = y; x = y; // 不安だからもう一回 >>188 発作的にリファクタリング掛けたい衝動に駆られるけど右の定数に規則性があるとは限らないのが嫌らしい でもそこに規則性がなかったらそれはそれでクソだわ >>253 そうね。 配列に値をセットするだけの関数を作って、その中に延々と記述だったらわかるわ。 >>188 ERROR_ALV_LINExxも定数で宣言してるんやろ? 虚しいな ぱっと見がlispに見えるperlを見たことがある >>17 三菱が客だとワンステップワンコメントとかいう愚行を強要されるよ ユーザからの言葉をそのままコードにしたIF文を見た時、めまいを起こした IF の後 AND 、OR、NOT が無数に並び、その下に 同じような IF文が続いてるのを見た時 これは、保守できんと、時期を見てプログラムの廃棄を了解してもらった 平均年収 アメリカのエンジニア 1200万円 日本のエンジニア 420万円 >>52 わかるわかる。俺もそうだった(黒歴史) 深いネストは避けるけどグローバル変数を異常に忌避する事と ついでに命名規則に異常に拘るせいで他のデータにアクセスする文法が滅茶苦茶長ったらしくなるんだよね 誰かサイコロのプログラム教えて 出目は等確率でできるだけ短く 最悪だったのは一文で数千行のSQLの修正をいくつもやったときだわ プログラム知らないやつが唯一知ってるSQLで 無理やりなんとかやろうとしてバグだらけにしたとこに投入された >>249 mainに集約させるのはメモリ常時使用量明確化のため スリープはデバイス操作のため gotoはアドレスジャンプの可視化のため と解釈したわ >>258 それは世界最長のプログラムだからギネスにとうろくでもしたらwww ホラふくのもたいがいにな >>266 Sub Saikoro Randomize:Msgbox Int(Rnd*6)+1 End sub >>263 やりたい事しか言わないユーザーを信用するから間違いが起こる 言外に有る例外を言わない、教えないバカユーザーに当たるとシステムが障害だらけ >>188 違う会社、違う時代に作られた2つの独立したモジュールのエラーコード変換処理あるあるだな。 もし右の定数の値に規則性があってもその規則を使うのは危険(いつ値が変更されるか分からん)なので、俺ならLUT作ってiLine添字にして一発変換だな。そのほうが処理も速いし。 >>239 Excelでクラスとか構造体とか使うなよ メンテ大変だろうがw >>133 うちの開発サーバはウルトラマンの名前だったわw 既に会社を辞めてしまった達人が書いたPerlのコード。 コメントアウトがなく、省略しすぎで何が書いてある分からないからブラックボックスに・・・ >>278 エクセルVBAなんてユーザーフォーム作るくらいしか使わんだろ ユーザーフォームにボタン配置するときクラス便利 俺の経験で一番驚愕したのは、そこそこデカい在庫管理システムの心臓部分がPrologで記述されているのを見たときには感心した。 しかも超簡潔で芸術的だった。 文系の人間がプログラマーになっちゃダメだよ 何でも力技でプログラミングするからスマートじゃない 自分以外の人が面倒を見るかもしれないという思いやりがあればいいが、心をすり減らした人がどうせ俺しか見ないんだろって作ったやつはえらいことになってる。 音楽で言ったらレディオヘッドみたいな状態のことですか? // とりあえず // たぶん // ここに来る事は無いハズ >>188 どうせバイナリーになったら同じだからこれでいい 配列にしていちいち目やエディタでカウントする時間がもったいない >>287 // Nothing To Do... シンメトリックなアリジゴクコード書いた時には高級言語要らんわと思った(´・ω・`) レジスターを0にしておかないと動かないとか低級でも>>6 はある まったくの素人だけどソースコードというより ツールを上手に使おうって話題にならないのかな? 作っても検証が必要な訳だし人の能力には限界があるし >>221 途中まで使ってたけど大幅に変えて使われなくなったんやろなぁ 自分もよくある >>295 モダン(て言葉は好きじゃないけど)な開発環境ではツール使いまくってるよ。 よりよくはなってきてるけど、結局最後は人が頼りなんだわ。 あとは、古い既存資産直したりする場合はそのお作法に則らないと逆に保守性悪くなったりとかあるんだよ。 ここが絶望的って事がままある んじゃ直せばいいじゃんて話ななると思うけど、当然だが直しには必ずテストがセットでついて回る。 直すのは簡単だけどテストにはお金かかるし、ここの金出せないor出したくないディベロッパーも多いんだよ。 結果、古いものは古いまま残る事になる 情報科卒なのにラダー言語(PLC)とかやってて同級生と話が出来なくなってた 知識自体は役に立つんだけどね >>188 配列に定数を格納すればよいのでは……? >>288 一瞬そうだなーと思ったけどこれの場合、配列にしたら変わるでしょ if文とswitch文の話ならともかく 俺「うわあああ何だこれ何やろうとしてんだこれ誰だよこれ俺だよ死ねよ」 俺「コメントあったやったあああ!グッジョブ過去の俺!」 俺「死ねよ俺」 素人のVBScriptを書き直したら爆速になったのは良い思い出 文系コードは追えば分かるからいいんだよ プログラマ適性の高い専門卒が書いたようなコードが一番キツい 決め打ちでしか組まれてないから仕様変更で全部迂回して新しいクラス作ることになる else if使わないやつww if () { } else { } が許されるのはフラグのときだけ >>11 以外にこれ、修理改変簡単だからありがたい。 >>106 一度しか使わないものは変数や関数にしないポリシーのやついるよな >>299 丁寧にネストしてると思いきや途中からずれてる罠 業種によるんだろ。 特定ハードウェア・デバイス対応な世界と、勘定系などの汎用プロジェクトの常識とではまったく世界が違う。 効率重視のデバイス向けや科学計算ではなく、本来保守性を重んじたはずの勘定・汎用系などのほうが デザインパターンなどに惑わされる。 低レベルを知らないからだろうがな。 > * 大量のクラス > * 迷路のような変数渡し > * 底なしに深いネスト まあ、こんなのは習ったことをやろうとして本質を見失っているだけだろうが、 三項演算子は、むしろこういう症状の人が最も嫌がるものじゃないの? その辺がよく解らんな。 まあ、例えば大工でも2X4工法とかやってるのと、宮大工と、超高層ビル建ててるのとでは常識が違うだろう。 飯屋でも、チェーン店のレシピと調理、運営と、定食屋などのそれ、小料理屋・割烹・料亭・高級旅館などとおのそれは プロトコルでも作法でも重視する点でもまったく違うだろ。 業務に適応してやってきたスタイルならともかく、なんか宗教的な流儀に拘ってるやつが多いのが困りものでしょ。 >>132 今のうちの現場だわそれ ほんと勘弁してほしい >>240 フィットRSやヴィッツRSに勝てませんみたいなwww 前に居た職場で1クエリなのに50000行も書かれてるのを見た 何考えて作ったのか、どうやってデバッグしたのか、謎過ぎる 可愛い派遣の女の子が書いたコードを修正してると勃起しない?俺だけ? 糞コードじゃないけど海外のコードはインデント2文字で非常に見辛い >>141 $test = 0; if( $name == "hogehoge" ) $test = 1; 代入を二行に分けているのが冗長で俺は嫌だな >>323 仕様変更でどうせそっちのパターンに書き換えるハメになるんだから 最初から全部そう書いとけ >>6 今笑えるけど実際見ると殺したくなる(ヽ´ω`) >>5 「XMLは分かりにくいからiniにしろ!」 と言い出したリーダーがマジで面倒くさい。 >>318 それすげぇな カラム数多いテーブル同士結合しまくってんのか? >>329 sieepってそれコンパイルが通るんかいな 通ったら不気味だな ベトナムに開発頼んだら変数の key にがっつり日本語入ってた >>329 システムコールでユーザーモードから特権モードにコンテキストスイッチさせてスタックポインタ切り替えさせてスタックとレジスタを綺麗にする処理だな HDLだけど、条件演算を4個くらい重ねて書いてたときあったな〜 あの時はホントに時間なかったし、ハードちゃんと動いてるから許してくれ const variable = is_hoge ? 1 : 0; だと const になるけど let variable = 0; if is_hoge { variable = 1; } だとデフォルト値があって再代入している形に なっちゃうんで意味合いが本当は違うと思うんだ データーベースにあるはずのデーターがコードに埋めてあった SE10年目だが、このスレの内容マジで一つも分からんw 悲しいやら嬉しいやら コードなんて簡単に複雑に出来る シンプルでわかりやすいコード書く方が難しいわボケ >>341 コード書かない設計onlyの人?それともpjに恵まれ続けてる人? だとしたら羨ましいな特に後者 switch(label){ case 1: goto label2; case 2: goto label1; case 3: goto label5; } label=0; label1: label++; label2: label--;; label5: label++; >>167 スレッドプログラミングがめんどくさかったとか? >>343 仕事の大半は運用保守で、PGはたまにマクロを書くぐらい。PJは設計までやって製造は外注にお願いするって感じだよ。 SELECT分を連結せずに 表1の結果をループしながらもう1行1行表2をSELECTしてた >>11 do while (false) で適宜breakすればネスト深くならずにすみそう >>347 運用畑の人か! ならあまりコードとは触れ合わないわな 端から見るといい仕事に見えるw それなりに苦労はあると思うけどw >>353 そんなアホなソースは俺ならソースレビューで全部NGにするわ嫌み付きで >>6 そこの変なprintf文を外すとメモリアロケートが壊れてバグるんだろ? >>342 システムはシンプルに構築するのがいちばんですよ。 適度に冗長な方がいいな 曲芸みたいなシンプルさは困る 昔、C言語で書かれた膨大な数のプログラム群のグローバル変数がaとかbとかふざけた名前付ける奴いがいてまじ絶望したけど 今ってVisual Studioがその辺しっかりサポートしてくれるからかなり楽だよな ウンコードマニア見ようぜ http://unkode-mania.net/ 個人的にJavaScriptにSQL文書いてる(もちろんクライアントサイド)のはヤバいと思った /* よくわかんないかも知れないけど、ここは触っちゃだめ。ゼッタイ */ >>336 HDLは普通のプログラミング言語で云うスパゲッティ状態でしか書けない言語だから ちょっとくらい条件式が込み入ってても問題ない それよりもちゃんと論理合成できてタイミングも満たせることのほうが大切だ >>335 条件分岐内にラベルがあると殺意がわく。 test := 1; if name = 'hogehoge' then begin test := 1; end; //これが美しい class hoge { public: hoge() { memset(this,0,sizeof(*this)); } virtual void foo(){} }; void sub(void) { p=malloc(100); do { ret = subsub1(); if (ret != 成功) break; /* goto はゼッタイ使っちゃだめ */ ret = subsub2(); if (ret != 成功) break; /* goto はゼッタイ使っちゃだめ */ } while(0); free(p); return; } 簡潔だった controller が肥え太って返ってくると泣ける むしろこれ レガシーと言えば聞こえはいいが… <?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?> <?php endwhile; ?> <?php else: ?> <?php endif; ?> 自分はあまり経験ないが 組み込みだとタイミングが変わるからこういう書き方>>323 はNGとか規約あったりするのだろうか 1. 複数回初期化される変数。しかも初期値はマジックナンバー 2. セットされるだけで決して参照されないプロパティ 3. if文の条件が入れ子の関数呼び出し。解析した結果恒等式だった時の殺意 4. コメントの「たぶん」「おそらく」「なぜか」 スレタイと全く関係ないけど関数の使い方とかどこで調べるの? hogeって関数分からなくてネットで調べると色んな言語出てきたり古い情報?出てきたりでプログラミング難しいおもいました >>364 三項演算子が素直じゃないと思うのはどういう背景なんだろ 代入とif文から入ることが理由なのかな ソースというか、DBの全項目がNULL可かつ一意項目無しだったときは絶望を感じた しかもそれ使って業務回ってんだよ 他人のソース見て一番困るのは「何の目的で組んだロジックか分からない」命令が出てきた時 1行でいいから簡単な説明のコメント行書いてくれるだけで全然違うのに さんまのAAが出てきて「shoーyuーkoto」って書いてある なぜか#ifdefはインデントしない文化があるのだけど よくあるのかね? ネストしてると読むのに死ねる ゲームプログラマーはアニメ、ゲームオタが多くてヌイグルミや美少女フィギュア置いてたり置いてたり気持ち悪いです >>380 使ってたから大丈夫なんだろう それよりキーと思われる項目が重複してたりNULLだったりするデータが大量にあって、 なんで動いてるのか不思議だった 大量のコピペフレームワークを見たときは殺意がわいた。 誰でも見たことあるよね。 自分の学生のときのコードとか >>382 専門用語多すぎて全く意味分からない 皆家とかで独学で勉強してんのかな >>387 汎用機の頃のデータをそのまま移すとそんな構成になる。 //s*****<< ここはよくわかんないけど合ってる >>****** //e*****<< ここはよくわかんないけど合ってる >>****** >>375 言語 hoge でググればいいんちゃう。Javaなら「Java hoge」で >>393 まぁ独特な言い回し使ってたりするからなjavaのapi仕様書って 取り敢えず使ってみてapi-doc見て言い回しに慣れろとしか言えんね そのうち読めるようになるよ >>398 やっぱググってんのかな >>399 大変なんやね >>288 最近の若いやつはちゃんとした情報処理の知識もないのか。 if elseだと処理時間最大O(n)だがLUTなら最大O(1)で処理できる。 switchの場合はコンパイラが優秀だとジャンプテーブル生成してO(1)のコードになる。 それでもLUT方式が最速かつコード最小。 >>394 古いデータじゃなくて、そんなデータが日々新たに作られてるんだよ >>375 C言語なら「まんぱげ printf」とか >>332 カーネルから戻ってきたらレジスタバンクもスタックも元通りになるのでそれはない。 そもそもスレッドごとにスタックは別なので関係ない。 Sleep(0)で唯一考えられるのは、スレッドスイッチング(ラウンドロビン)がここのサービスコール中に発生しやすくなることじゃね? 当然タイミングによってはちゃんと動作しなくなる。 フローチャートを書いていかなる入力に対してもエラー含め答えが百パーセント保証されないサブプログラムがあるコードはダメだな でもプロ将士並みの頭脳なら数千行のコードを書けるかもしれない >>407 同意。 いにしえのフローチャートで設計すると、for文の中にcontinueが頻発するようになる。MISRA C違反。 >>188 iLineとエラー定数のHashmap作れ >>30 追っかけなければ行けない様な物を、クラス化するからだろ。 >>188 配列にしたくなるけど、将来的にインデックスが歯抜けになる可能性があるとか、 配列のアクセス範囲、配列の確保や初期化、そのテストコードと、考慮することが増えるから、これはこれで簡潔な実装だと思うよ。 汎用コンピュータのアセンブラ言語でのバッチ処理は普通に5000行あった。 >>401 CPUの0ステータスビットみるからO(1)でできない? cmp beqもしくは bne クレジット会社のJavaソース 気が狂いそうになった 以前全部マクロで全部大文字のコードをみたときに何か吹っ切れた >>209 演算子の処理順番を完全に理解してる人から見たら邪魔と言われる 一瞬、見た目で理解し時間短縮の人はそう言う(演算子の処理順番を理解してないと言うと怒る) コード規約に従います >>419 すっげー高度なブランチプレディクションっすね >>17 コメント一通り書いてからそれ通りにコード書く奴いるよな そういう奴のコードはコメントがプログラミング言語を日本語にしただけのものになる >>368 mallocの失敗が考慮されてないやり直し >>200 こう書きたい a =b : c ? b<c; Linuxソースコードのアドホックメモリの確保のところがわかりづらい >>246 そうそう 結局コメント残しても意味なくね?ってなる 女の子にやらせたらラベルがお花になっていて goto himawari; とかなっていた goto文禁止してるプロジェクトはロクなもんじゃない >>49 aとかbとかいうローカルフラグやめてほしい >>125 適当なプログラム書かせて採用決めればいいのに まっさらな状態から教え込もうとするのに限界がある 向いてない奴が大量生産されて困ったことに 文章苦手な奴に小説なんか書けるわけないだろう >>160 括弧をコメントにしたら対の括弧もコメントに入れといてくれ >>266 return time () % 6 + 1; >また、条件分岐に多段の三項演算子を乱用するなどの症状も多く見受けられる。 多段は皆嫌 コード規約が常識化して良かった アホが一人で意地張ってやめないのをルールで規制できる >>436 ありません。 諦めなさい。俺は28才でした。 >>439 例外的な処理は、goto使った方が見やすいからな。 秘技リテラル地獄 コードやIDがリテラルで埋まってる。データベースは死ぬ。 >>448 例外的なのは最初か最後にbreakかreturnで抜けるなぁ。 本当はgotoでも良いんだけど、流用や機能追記時にアホが考え無しな事をしてるのを見て無理だと悟った。大昔に。 まぁアホにかかったら何でもダメなんだけど、確率って事でなw >>89 それな 1ステップ何円、とか言ってたの思い出したわ 一人でこつこつサグラダファミリアみたいにプログラム作るのがよさそう >>42 gotoなんかvbaですら書くやつは少ないだろ。 ただresume nextが欲しいと思う時はある。 // TODO 結合試験では外すこと! 今本番稼働中なんですが… 同じ処理がいろんなファイルに書いてある時 他社からの引継ぎで攻撃受けてトロイが仕込まれたままのコードを渡された時 >>450 例外で後始末をしてから抜けなきゃならない時に 同じ後始末の処理をそこら中に書いてある奴は後始末処理を修正する時にミスする元だし 例外フラグ作って各処理バイパスしてくのもわかりにくいしミスの元だしgotoするのが一番わかりやすくてエレガントだ gotoは前に戻っちゃいけない、ループの外から中に飛んじゃいけない程度の規定で分かりやすくなるならどんどん使った方がいい >>456 exceptionを捕まえられない言語の話? visualstudioやeclipseが便利すぎて、IDEなしではコード書けなくなった >>459 新卒の時はviで開発してたわ俺 よくやってたよ正直 高機能なIDEが提供されている現代で頑なにEmacsやViで開発してるやつはなんなの? マゾなの? >>451 行数の多さで生産性決める現場あったわ くだらねえと思った >>461 VSは重い上に書式のゴリ押しが強すぎてエディタとして実用性に欠ける ノートでまともに動かねえ VBscriptでHello World (要Excel) '# hello.vbs で保存してダブルクリック dim EXL set EXL=WScript.CreateObject("Excel.Application") EXL.Workbooks.Add EXL.Cells(1,1).Value="Hello World" EXL.Visible=True >>402 データの構造の話だね。合計すると256バイトになるようなテーブルとかじゃない? クソみたいなプラットフォーム上で無理やりシステム組まされたら嫌でもクソコードになる 俺が辞めたら誰一人理解できないだろな みんなすごく技術好きなんだね でも仕事の現場では、お客さんの課長さんと主任さんの要件の対立をおさめたり、 そもそも要件出してくれないのを催促したりするのがメインの仕事になんだよね そらIT技術者になりたいやつ減るわ >>469 そこに関してはITに限らないんじゃね?顧客との折衝はどの職種でも必要 他業種だとお客さんもプロで話はやいけど、ITはお客さんがよくわからんから頼むって要件定義ですら投げてくるとこあるからなあ お互い不幸に仕事する羽目になる >>329 シグナル受信待ちじゃないの 別におかしくない >>373 アトミックな代入はそれ用の命令使うからこれで問題ないよ >>1 >* 大量のクラス >* 迷路のような変数渡し >* 底なしに深いネスト ↑この状況になるのにオブジェクト指向もデザインパターンも一切関係がない 単に馬鹿なだけ OJTなどと言ってまともに新人教育をしない企業で働く素人に毛が生えた程度の底辺のやることであって、中級者ですらない 勝手に中級者病などと勘違いも甚だしい言葉を作るな 新規プロジェクトで、これまでの慣例通りStruts1使えという猛反対を押し切ってSpring初めて使ったら綺麗すぎて鼻水出たわ >>79 言ってることはわかる でもその改行はないわ それならif文で書くわ >>467 違うよ DBの全項目って書いてるだろ どのテーブルをみても主キーが無いんだよ 理解しようとする必要はないんだ 「絶望を感じた」話を書いてるんだから なにがしかの合理性があるのなら絶望なんて感じないだろ? 例えば見積テーブルのキーである見積り番号がNULLだったり重複があったりするんだよ 業務上絶対必要な筈なんだけどね じゃあほかにシーケンスなり別のキーが実はあるのかというとそれも無いという >>469 客先に出れるまで10年以上かかるんだよなあ 8割の社員がそれまでに辞める 昔フレームワークの上に、独自フレームワークを載せたカスがいたなあ >>474 シグナルの受信待ちでsleep使うとかアホやわwwwwwww 常に受信待ちにしとけよwwwwww 必要ないなら切れよwwwwwww >>478 それ、正規化以前の問題では… 正規化せずに動くんだ 始めて知った >素人に毛が生えた程度の底辺のやることであって、中級者ですらない それな 底辺がそのまま経験を積んでも中級者にはならない >>482 まあ恐ろしいのはそれが某大手SIerの作品なんだよね しかも「こんな素晴らしい開発をしました」みたいな例としてサイトにのってやがんの 恐らくだけど、「10人で10ヶ月」みたいな開発に対して、 「100人で1ヶ月でやれや」って指示をしたんじゃ無いかと それで、DBは各機能や画面のメモにしかならなかったんじゃないかと思う 野党・マスゴミ関数 main(){ do{ モリカケ(); } while (true); } >>482 正規化はデータ構造の整理の話だからな プライマリーキーがなくても一応テーブルはつくれるし検索はかけられるだろ >>478 レコードにtimestampさえ入ってりゃAP側で何とかなるで DBなんてデータ永続化とバックアップ集中の役割さえ果たしてくれればええねん という割り切りかもな 「GOSUBよりGOTOの方が早ええんだよ」の頃から本質的には変わってない コード書きは熟練してもコード書き システムは作れんのだ お前らの言ってる事は、これから城塞作ろうって時に 煉瓦の焼き方がどうのこうの積み方がどうのこうのと言ってるのと一緒 >>488 だから無いんだって レコードはいかなる方法を使っても一意に特定できないの だから絶望を感じたって話ね しかもソイツがなんらかのロジックで基幹システムと連携してるんだぜ 絶望しか感じないだろ 昔、BASICでGOSUBでサブルーチンに飛んでGOTOでいくつものサブルーチンを渡り歩いて RETURNで戻ってくるプログラムを見た時は痺れたわwww >>489 コードなんてどうでも良いんだ!なんて言い出すと みずほ銀行みたいなことになるけどね 10 PRINT"(´・ω・`) " 20 GOTO 10 >>426 あと お客さん仕様:数値を調べて、一番小さい桁を捨てて、全ての桁を1つ移動させる(10で割って、小数点以下は切り捨てみたいな) サブリーダー「なんで態々桁を移動するような関数作ってるの?」 製造「お客様の仕様に沿っただけです」 サブリーダー「だからと言って、言語に合わない事をするな。せめて既存のライブラリを使え!」 こういう人も居る 言語指定が無いままソースコードを書いて 「俺ならこう書く」とかあるけど 基本的にC89って事でいいのかなw >>482 正規化せずともプログラムのロジックで対象を見つけ出しさえすれば、できないこともないんだろうが 作った人も、その労力を別のところで発揮してれば、もっと良かったろうにね >>490 それ結合や受け入れテスト、どうやったのかな? ネットのコピペそのまま コメントまでそのままで笑った >>332 >>404 お前らすげえわ 何言ってんのかまったくわからん Cだけどmainのカッコからカッコまで10万行あったのをメンテしてた事がある >>478 多分、こんな感じかな 基幹システム @見積り管理マスタ(テーブル) 支店コード 見積りSEQ 見積りトラン開始ポインタ 見積りトラン最新ポインタ A見積りトラン 見積りSEQ 支店毎にSEQ 見積り先コード 商品コード 商品数 @、A共にDB外で使用されていたが、見積りデータから商品の発注予約或いは製造計画を練りたいとのことで、AのトランだけDBへバッチ転送 しているとか 後輩に昔のコードを見られるほど恥ずかしいことはない >>466 そう言えばASP.NETでしか使えないVBscriptは止めろって怒られたな >>459 お前さんにUNIXでVi editorでUNIX COBOL修正して、コンパイラかけてモジュール作ってUNIXシェル動かして、IN OUT編集してデバッグ結果検証、て作業やらせて発狂させたいわ >>491 白黒のシャープのザウルスのプログラムでそんなのあった。 しかも容量も少なくインタプリタだから改行や空白でも容量食っちゃうから、 改行すらケチって延々と一行で書かれてたwww 先輩に汎用的なコードを書けと言われて、どんどん汎用性を持たせた結果、、 eval(cmd); 先輩はこれで満足してた クソコードをメンテ云々言ってる奴は捨てる勇気がないだけ iアプリ時代のJavaは for(i=0;i<100;i++){ //処理 } より for(i=99;i>=0;i--){ //処理 } のほうがVMバイトコードを1バイト節約できるとか言う話だった ※当時は「大切に使え、血の1バイト」とかいわれてプログラム 作ってた。あれは本当だったの? >>29 NECのがバグをいつまでたっても直せないからソース見たら、定数や変数にコメント書いて無いのな おそらく他社に切り替えられないように別に管理しているんだろうけど、メンテしているお前が理解でき なくなってんじゃないのか? 解析したらオーバーフローしていたぞ >>517 JavaVMに限らず、一般的に定数以上とか以下とか判定するには2ニーモニックもしくは多倍長命令が必要だけど、ゼロ条件分岐はZフラグ一発で判定できるから。 今時こんなこと言うやつはいないとは思うけどね。 >>266 PowerShell $g = [Security.Cryptography.RandomNumberGenerator]::Create() $b = New-Object byte[] 1 do { $g.GetBytes($b) $n = $b[0] } while ($n -ge 252) $n % 6 + 1 >>359 アクロバティックなオナニーコードは困るよなぁ クソハゲうんこマンがひり出す再起処理の絶望感は異常 逆にイケメンフサフサマンがおひり出しになられるご再起処理のワクワク感は異常 >>518 NECは社外にソースコードを出すときコメントを削除する 本気を出したときは関数名や変数名もaとかbとか意味のない値にする 最初は開発用と納品用でソースを分けて管理するが、時間が経つと納品用だけ編集するようになり破綻する >>504 どんな理由だよw ソース紛失に寄る、恐怖の逆コンパイル物の解析? >>6 ちょっと笑ったw 前提条件、環境変数的なものを何で気にしないでいいんだよw 大量のクラス→責務分割できてる証拠 迷路のような変数渡し→値オブジェクトなどを覚えるのでむしろ無駄な変数渡しが減る 底なしに深いネスト→中級者はネスト大嫌いなので逆に減る この記事を書いた人は他業種の方かな? >>474 シグナル受信待ちって、非同期なIPC使う必要ないじゃん >>457 exceptionも万能じゃない 例外Aは後始末aだけ 例外Bは後始末bとa 例外Cは後始末cとbとaならgoto文使いたくならないか >>534 全くならない 例外Aに後始末aが必要ならそれをコードで表せ そんな状況で例外Aだけに後始末dが必要になったらどうすんの?スパゲティ和えるのか? >>534 俺もならんなぁ。 ややこしい処理ならabc自体を関数化する(手続きと制御を分離する)ベキだし、その条件に限ればbreak無しswitchでも表現出来る。 超絶効率(サイズorスピード)を求めない限りgoto必要ない→組み込み系には必要かも。って考え。 >>534 ちゃんと分けて書く 変にまとめると追わないと読めない >>433 いや そこでとめずに今度はその場で得た知見をもとに再度コメントを修正するんだ フィードバックを繰り返せば小説のように書き方が身につくかもしれない >>520 それだと for(i=99;i,=0;i--){ //処理 } が正解でないか? >>509 set -o vi で幸せになれるかも >>538 ああ、この場合ゼロフラグじゃなくてボローフラグが正解だね。 どちらにしろ一発だ。 >>534 こんなのね if (STATE_A) { A(); ; RET=1; goto EXIT; } ; ; if(STATE_B){ B(); ; RET=2; goto EXIT; } ; C(); RET=0; EXIT: close_handle(); free_buffer(); ; return RET; 大量のデータをForループで1行ずつ追加して、1行データを追加する度に画面をリフレッシュ。 データ量が多いから仕方がないと顧客には説明されてた模様。 なお、Select InsertでForループを削除して、画面リフレッシュを1回にしたら、パフォーマンスが劇的に改善されて神扱いされたことある。 // ゴメンなさい、後はよろしく なら見たことある >>504 VBAで前任者が投げ出したコードがあったが、ボタンクリック時の処理が関数1個だけで1KLオーバーで卒倒した (いわゆる、一から十までmain関数に突っ込んでる) 内容解析したら同じ動作を5回か6回繰り返してる(ACCESS-DBからデータ拾って表形式に変換)ので、一応データ責任者に変更許可貰って局所関数として編集 結果、かなり全体的にすっきりした >>504 あ、俺もCでその半分ぐらいの行数ならメンテしたことある! しかも複数行をdefine定義したマクロ多用してて、さらにそのマクロの中でreturnやgoto使ってるもんだから常人には理解不能だったわ。 さらにさらにデバッガさえもその関数を解析しきれずにローカル変数のウォッチができなかった。 それ作ったのは日本の最高学府卒のスーパーエリートで、そんな関数を殴り書きで作りながらもほぼ一発でバグなく動かす、本物の天才だった。 後にも先にもあんな凄い関数と天才プログラマは見たことないわ。 >>550 言いたいことはよく分かる。 しかしそれを超越した衝撃があったのよ。 >>549 そう言う俺コードを参考書に書いてる馬鹿がいて、新卒君が変なコードばかり書くから、聞いてみたら、この本で勉強しましたって。 その本、今も売ってるけど他人に理解できない、自分だけの謎ルール多用の俺コードばかり。 そんな本で勉強した奴が社会に出てくると困るわ。 著者はCだけでなくC++とJAVAまで出版してる。 >>551 マジシャンとかウィザードって呼ばれるタイプやな >>549 文系の場合はそんな感じて全ての法と施行令の相関関係と矛盾点を頭の中に入れながら曲芸的綱渡りだけど瑕疵の無い無謬な文書を書けたりするような奴が官僚になって制度動かしてたりする if (x == null) { return null; } マジで意味わからんかった >>490 一意である必要あるのか 実業務で同じ見積書番号の見積書を何種類も使ってて一意管理されたら困るのかもしれないだろ >>557 null以外なら処理が続くんじゃないの? 三項演算子や1行でかける演算をif~elseにしているほうがわけわからないだろ result=(a!=null); value=1^value; で済むことをif〜elseでgdgd書いてあったり >>9 ラムダ式いいのだけど streamかくとfor-eachで書くより長くなったりして ログ出力ルール対象部分だと無駄に長くなったりとあるからな >>545 // 取れなかったときどうするのかな とか // どちらも入ってないときどうするの? みたいのは日常… ただのクロージャじゃないの? なんでラムダ式なんて別名つけたんだろ /* おねがい。探さないで */ /* 今ならまだやり直せる */ >>450 returnが複数有ると見づらい。 break は、何処に抜けるかが間違いやすい。 不出来のソースコードを添削してくれるAIを開発すればいい 実行行にマークして終了までを動画にしてくれたらいい /** konnafuu ni komennto nanoni kanji kinnsi de roma-ji nyuuryoku de kakareteiru source wo mitakoto aru */ ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる