1: ノチラ ★ 2018/04/27(金) 21:01:14.39 _USER

788index

命名規則に関連するクソコード

クラス名、メソッド名、変数名などのネーミングを誤るとクソコード認定されてしまいます。会社やプロジェクトごとに多少のルールの違いはあるにせよ、どこに行っても漏れなくクソコード認定されてしまうネーミングパターンのご紹介です。

ネーミングが「記号+番号」

クラス名や変数名はわかりやすい名称にしましょう。ネーミングを見て内容を推測できるようになっていることが重要です。「記号+番号」ではそれを見るだけでは何のプログラムであるかを推測することは不可能です。

ネーミングに日本語、英語、ローマ字が混在

プロジェクトによってクラス名や変数名のネーミングルールは異なりますので、何がダメだというわけではありませんが、自由すぎるネーミングを行うのはやめましょう。きちんとプロジェクトでルールを統一することは重要です。

またにクラス名や変数名に日本語を使用することは言語仕様上可能とはなっておりますが、アルファベットを使うことが慣習となっていることと、日本語だとIDEの補完機能がうまく機能しないことがあって非効率化の原因となりますので、避けた方が無難です。

ネーミングにスペルミスがある

ネーミングでスペルミスがあると、後でソースコードから文字列で該当箇所を検索する時に検索にヒットせず、改修漏れの原因にもなります。正しいスペルと間違ったスペルが混在していたりするともう最悪です。スペルミスのないように気をつけましょう。

ネーミングに個人名が使われている

ネーミングはプログラムの中身がわかるような名前にするという観点からも、プログラムの中に自分の名前にすることは適切ではないのでやめましょう。

またソースコードレビューの時に思いがけず恥ずかしい思いをすることになるかもしれません。私は新人の時に「yonemura.sh」という名前で自分用に作ったシェルが他社に買い取られることになってしまい、他の会社のエンジニア20名くらいの前で「よねむらシェルとは・・・」と説明会で大きな声で読み上げるはめになって大変恥ずかしい思いをしたことがあります。

個人で使うプログラムでもプログラムの中身を表した無難なネーミングにしておくことを強くお勧めします。

ネーミングに番号やアルファベットの連番が使われている

クラスや変数のネーミングに、1からの連番やaからの連番を使うと、クラスや変数の中身を推測することが不可能になってしまうのでやめましょう。こういうことをすると後でそのプログラムをメンテナンスする人に、一々プログラムの処理を細かく解析することを強いることとなり、「このクソコード書いたやつまじで氏ね」と言われてしまいますのでやめましょう。

可読性に関連するクソコード

プログラムは後でメンテナンスするためにも、読みやすく書くことが非常に重要です。処理の内容だけ見ると読みやすくても読みにくくても実行される内容は同じかもしれませんが、読みやすいソースコードは改修の工数を下げますし、バグが混入するリスクも下げてくれます。

ネストが異様に深い

ソースコードの中にネストが何重にもなっている箇所があると可読性を下げてしまいます。ネストを何重まで許可するかはプロジェクトによって異なりますが、個人的には3重か4重くらいまでにおさまるようにコーディングするよう心がけていました。

これとセットで「1行の文字数は80文字まで」みたいなコーディング規約があるとさらにカオスな感じになってきます。ネストが10階層+1行80文字までとか、考えただけでも嫌になりますね。

インデントがずれている

今どきエディタが良い感じにインデントしてくれるのに、まさかインデントがずれているソースコードなんて存在しないと信じたいところですが、昔作られたソースコードだとそういう化石みたいなクソコードにお目にかかることはあるようですね。

カッコの閉じ位置のインデントがズレていたりすると、著しく可読性を下げますし、コードの解析を誤るリスクも増えてしまいます。こういうことをすると漏れなくクソコード認定されてしまうでしょう。

1つのメソッドが異様に長い

たまに1つのメソッドが異様に長いソースコードにお目にかかることがあります。私の個人的な感想だと某国にオフショア開発に出されてウミガメのように日本に帰ってきたソースコードにそういうメソッド分割の概念が消失してしまったかのようなソースコードが多いように思います。

1つのメソッドの長さが数千行にも及ぶような男前なソースコードにバグが混入してしまい、解析及び改修をしなければならなくなった時には絶望するしかありませんね。

以下ソース


https://axia.co.jp/2018-04-27
引用元: http://egg.5ch.net/test/read.cgi/bizplus/1524830474/


2: 名刺は切らしておりまして 2018/04/27(金) 21:12:21.90

プロパティを自分で作れるのを知ったのが
IT土方5年目

3: 名刺は切らしておりまして 2018/04/27(金) 21:13:21.93

今まで見た一番難解だったプログラムは、
GOTO文でデータ部にジャンプして、そのデータ部が実はマシン語だったケース。

8: 名刺は切らしておりまして 2018/04/27(金) 21:30:27.54

>>3
おう、すごいな。
プロテクト外し対策だな。

36: 名刺は切らしておりまして 2018/04/27(金) 22:09:39.97

>>3

Go toは、プログラミング習いたてのときは便利だと思った。

実際に機械制御でGo to使った先輩のプログラムで、実験装置壊しかけて偉い目にあった。

そこから全力でオブジェクトのVBに変えた懐かしい思い出。

N88 BASICなんて、誰が分かってくれるのか…

63: 名刺は切らしておりまして 2018/04/27(金) 22:45:02.85

>>3
昔のmaxfanの投稿プログラム並みだな
8bitなら慣れたら読めるぞ

117: 名刺は切らしておりまして 2018/04/28(土) 02:08:08.29

>>3
ウィルスのソースコードかよ

209: 名刺は切らしておりまして 2018/04/28(土) 13:02:59.85

>>117
> >ただし、そのグローバル変数は他関数から全く参照されない。
> デバッグ用じゃね?常に同じメモリ領域を監視すりゃいいわけだし。ロジアナでバス監視も出来る。
> >呼び出し元で戻り値を参照してるが、その値は常に0。
> 正常は0、エラーは負。正常終了しか実装してないから0返してるんだろ。
そんなまともなもんじゃなかったよー。
まぁ、必要性わからずにどっかからか持ってきたんだろうなーと思う。

4: 名刺は切らしておりまして 2018/04/27(金) 21:15:13.35

1行目がGOTO文なBASICプログラム

58: 名刺は切らしておりまして 2018/04/27(金) 22:34:11.08

>>4
0x0000 番地が JMP のマシン語なら普通にある

75: 名刺は切らしておりまして 2018/04/27(金) 23:14:47.49

>>4
Pascal風に先に関数(サブルーチン)書いて、最後にメインルーチンってのが流行ったことはある。

99: 名刺は切らしておりまして 2018/04/28(土) 00:33:39.85

>>4
インタプリタ型BASICで、GOSUBで飛ばすサブルーチンを先頭付近に持っていって、
高速化するテクニック。

100: 名刺は切らしておりまして 2018/04/28(土) 00:36:34.68

>>99
行番号が小さい方が速いとか馬鹿馬鹿しい時代あったなw

118: 名刺は切らしておりまして 2018/04/28(土) 02:11:31.84

>>100
変数名の文字数が少ない方が早いとかもあった気がする

7: 名刺は切らしておりまして 2018/04/27(金) 21:25:52.51

ITドカタの世界なんて知ってもなぁ

9: 名刺は切らしておりまして 2018/04/27(金) 21:30:45.55

>>1
マイクラのjavaソースなんて一発目から該当するけどなw

50: 名刺は切らしておりまして 2018/04/27(金) 22:18:09.83

>>9
難読処理をクソコードって言っちゃう奴

10: 名刺は切らしておりまして 2018/04/27(金) 21:31:23.91

YAMAUCHI

52: 名刺は切らしておりまして 2018/04/27(金) 22:18:46.95

>>10
あの時代にマルチCPUってのが何気に凄かったよな

146: 名刺は切らしておりまして 2018/04/28(土) 07:50:26.83

>>10
タモリのパソコン

156: 名刺は切らしておりまして 2018/04/28(土) 08:55:19.27

>>146
それはYAMAUCHIやなくてもいけるらしいぞ。

13: 名刺は切らしておりまして 2018/04/27(金) 21:45:41.22

昔は日常会話の様にマシン語で会話してるヤツが居たんだが、彼らはどこ行ってしまったんだ?

110: 名刺は切らしておりまして 2018/04/28(土) 01:42:18.71

>>13
おまえ一日中0x90やなーとか

16: 名刺は切らしておりまして 2018/04/27(金) 21:50:49.40

ユニットテストのメソッド名とかに日本語を使うと意外とイイ

19: 名刺は切らしておりまして 2018/04/27(金) 21:54:13.20

>私は新人の時に「yonemura.sh」という名前で自分用に作ったシェルが

>他社に買い取られることになってしまい

おいしいシチュエーションじゃん

仕事回ってくるかもよw

20: 名刺は切らしておりまして 2018/04/27(金) 21:54:26.53

スペルミスは問題ないよ
全てがミスで統一されていれば

213: 名刺は切らしておりまして 2018/04/28(土) 13:16:13.03

>>20
そういう余計なローカルルールを持つこと事態が糞だと気づけよ

22: 名刺は切らしておりまして 2018/04/27(金) 21:57:12.51

これより下にコードを書くな

139: 名刺は切らしておりまして 2018/04/28(土) 06:59:58.95

>>22
忘れられるんだよな。悲しいわ。

24: 名刺は切らしておりまして 2018/04/27(金) 21:57:45.6