IT、ガジェットネタまとめ速報

IT技術やガジェットネタに関するみんなの反応のまとめをチョイスしてお届け!

Web系関連記事: プログラミング、開発関連

本当にあった怖いプログラム(クソコード事例集)

投稿日:

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/


続きを読む


【期間限定】失敗しないためのカリビアンコム3日間無料キャンペーン情報まとめ

このまとめの続きはコチラ!

-Web系関連記事: プログラミング、開発関連

関連記事

ν速公認のスクリプト言語を決めようぜ

1: 名無しさん@涙目です。(北海道) [ニダ] 2018/06/30(土) 13:22:11.42 BE:422186189-PLT(12015)
xamarin.mac multiple do shell script with administrator privilege with one password request https://forums.xamarin.com/discussion/103039/xamarin-mac-multiple-d…

台湾の「38歳」デジタル大臣から見た日本の弱点 「まだ多くを学ぶ必要があるが遅れている点も」

1: 田杉山脈 ★ 2020/02/05(水) 16:59:42.64 _USER
「台湾を代表するプログラマー」「天才」。2016年10月から、台湾政府で「デジタル大臣」を務める唐鳳氏(38歳)のことだ。12歳からプログラミングを勉強し、義務教育を飛び出して15歳で起業。19歳で米シリコンバレーでも起…

AI技術で「IQが低い生命」を選別、米企業が開発

1: 田杉山脈 ★ 2018/11/21(水) 23:41:39.90 _USER
人工知能の倫理が何かと問題視されることが増えてきたが、最近、米国から「人工知能を使う人間の倫理」が問われそうなユースケースが報告された。 海外各メディアが報じたところによれば、米国の遺伝子検査企業Genomic…

Java SE、新バージョンで有償に 1ユーザ月額2.5ドル、サーバ向けは1CPU月額25ドル

1: 名無しさん@涙目です。(宮城県) [US] 2018/06/23(土) 17:48:55.73 ● BE:601381941-PLT(13121)
Java SEの新ライセンス体系、米オラクルが公表 米オラクル(Oracle)は2018年6月21日(米国時間)、Java SE(Java Platform, Standard Edition)の サブスクリプショ…

18億円の国のサイバー攻撃防止機能 未使用で廃止 使い勝手悪く

1: 田杉山脈 ★ 2019/10/08(火) 13:23:28.19 _USER
サイバー攻撃などからの情報の漏えいを防ぐため、およそ18億円をかけて開発された国の情報管理システムが、運用を始めてから2年間一度も使われず廃止されていたことが会計検査院の調査で分かりました。 4年前の2015…