人気サイト様 最新記事

博士ちゃんねる ヘッドライン

レスの強調ウゼェー!というドクターへ

レス内の強調表示をOFFにする コチラをクリックして切り替えてください。設定は30日間Cookieに保存されます。
現在のステータス:強調有効

イラッつとするコーディングスタイル @ [プログラマー板]


イラッつとするコーディングスタイル @ [プログラマー板]
1: 仕様書無しさん 投稿日:2012/03/10(土) 22:20:29.12
文法的には何ひとつ間違ってはいないし、本人なりに見やすくしようとする意図は汲み取れるのだが、どうにも気持ち悪くて、「修正してやる!」と叫びながらキーボードを激しく連打したくなる

そういう薄気味悪いコーディングスタイルを発見したら書き込むスレッド
5: 仕様書無しさん 投稿日:2012/03/11(日) 01:07:15.09
スレタイがイラッつとする
7: 仕様書無しさん 投稿日:2012/03/11(日) 01:55:03.52
#define private public
11: 仕様書無しさん 投稿日:2012/03/11(日) 06:31:52.11
コードの書き方にこだわるようじゃ3流だな。
こだわるべきはアルゴリズムだろ。
そこがきちっとしていればコードが短くなる。コードが短くなれば自然と読みやすくなる。

早くその領域に達するといいな。
12: 仕様書無しさん 投稿日:2012/03/11(日) 07:15:38.84
他人のコードを読んだことないの?
13: 仕様書無しさん 投稿日:2012/03/11(日) 09:14:43.77
>>11
既知のパターンで書かれているかも重要
パターンとパターンをつないでいくような作りであると、読みながら何をしたいのかが分かる。
14: 仕様書無しさん 投稿日:2012/03/11(日) 12:56:09.17
>>11
コードを短くするにはアルゴリズムではなく、関数にすることが重要。

どんなに長いコードでもたった一行にできる。
しかもすごく読みやすくなる。
17: 仕様書無しさん 投稿日:2012/03/11(日) 17:29:28.29
古来から言われていることだが、ポインタ変数と普通の変数をいっぺんに宣言するとまぎらわしい。
18: 仕様書無しさん 投稿日:2012/03/11(日) 18:26:18.08
>>17
int* ptr_A, B;
こんな感じ?
19: 仕様書無しさん 投稿日:2012/03/11(日) 18:34:53.32
K&R流では
int *pa, b;
だね

*(アスタリスク)の前に空白を入れるのか後に入れるのかという違いだけど、>>18のスタイルの発祥はどこなんだろ?
管理人より:「ポインタ」というのは、プログラム初学者が3番目くらいにつまづく壁。データの実体ではなく、データの実体への参照(メモリのアドレス)のみが入ってる式のデータ構造。
27: 仕様書無しさん 投稿日:2012/03/12(月) 02:39:19.67
定数宣言で=の位置を縦に揃えるのがあまり好きじゃない
29: 仕様書無しさん 投稿日:2012/03/12(月) 13:02:39.61
>>27
俺は逆に、揃えてないほうが不快。
30: 仕様書無しさん 投稿日:2012/03/12(月) 14:48:57.42
揃ってると見やすいけど修正しづらい
31: 仕様書無しさん 投稿日:2012/03/12(月) 15:04:21.10
後で長い名前の定義を足した時に揃え直すか迷う
37: 仕様書無しさん 投稿日:2012/03/12(月) 21:35:49.34
=の位置で簡単に揃えられないエディタを使う奴が無能なだけ。
39: 仕様書無しさん 投稿日:2012/03/12(月) 21:53:50.70
だからコボラーはCOL001,COL002,COL003…みたいな変数にしてたんだろ
42: 仕様書無しさん 投稿日:2012/03/13(火) 07:26:43.39
>>39
変数の長さを規約で決めてしまうのか
ソースを見やすくするっていう規約の存在意義を考えるとアリだな
40: 仕様書無しさん 投稿日:2012/03/13(火) 00:48:50.68
エディタ表示部が勝手に検知して勝手に揃えて表示するというのはありなような気はする
画面表示がディスク上のファイルのバイナリ列と完全に一致しなければならないわけじゃないしな
管理人より:COBOLの例はずいぶん本末転倒に思えるわけですが、確かにCOBOLerに多いですね。「手段のためには目的を問わない」という、おかしなマは後を絶たず。
var hakase        = 1;
var channel       = 2;
var is_super_cool = 3;
↑定数宣言じゃあないけど、こういう感じのことです。管理人も昔やってたけど、メンテナンス時に修正がめんどくさい。
33: 仕様書無しさん 投稿日:2012/03/12(月) 16:30:15.35
俺はインデント以外でタブ文字使われるのが大嫌い
34: 仕様書無しさん 投稿日:2012/03/12(月) 19:58:47.49
キナ臭くなってまいりました
35: 仕様書無しさん 投稿日:2012/03/12(月) 20:46:52.41
タブサイズを8以外にしてるのがイラっとするわ。
36: 仕様書無しさん 投稿日:2012/03/12(月) 21:11:14.76
indentのデフォルトは2じゃね?
43: 仕様書無しさん 投稿日:2012/03/13(火) 09:01:52.99
>>36
インデントは2でも4でも8でもいいけど、タブのサイズを4とかにしてタブでインデントしてるヤツは、イラっとするわ。
47: 仕様書無しさん 投稿日:2012/03/13(火) 22:54:43.60
>>43
MS「(;゚Д゚)エッ…
50: 仕様書無しさん 投稿日:2012/03/13(火) 23:57:17.22
>>43はRuby使いなんじゃね?
Rubyには標準ライブラリを含めてインデント2で書かれたコードが多い
52: 仕様書無しさん 投稿日:2012/03/14(水) 00:35:03.78
>>43
チカンすればいいじゃん
53: 仕様書無しさん 投稿日:2012/03/14(水) 02:52:09.84
>>52
おまわりさんこっちです
55: 仕様書無しさん 投稿日:2012/03/14(水) 13:02:41.26
47-49
タブサイズは8に決まってるだろ。
タブサイズを8以外にしてるやつは迷惑だわ。
インデントを8以外にしたいときにはスペース使え。


>>52
どっちにしても面倒だし、チカンするくらいならエディタの設定を変えたほうが速いだろ。
51: 仕様書無しさん 投稿日:2012/03/14(水) 00:10:57.34
インデント2は明らかに少なすぎ。
デザイン的に空間が分かれてるように見えない。
56: 仕様書無しさん 投稿日:2012/03/14(水) 16:12:41.42
インデントはタブサイズの設定関係ないだろ
インデント以外のレイアウトにタブ使うヤツがクソ野郎
60: 仕様書無しさん 投稿日:2012/03/14(水) 19:30:13.99
>>56
関係あるだろ。
タブサイズ4前提でインデントしてて、8に設定してあるエディタで見ると崩れるやつとかいる。
65: 仕様書無しさん 投稿日:2012/03/14(水) 23:14:52.71
>>60
すまん、インデントの意味を間違えてた
段落を意図したインデントのみタブを使えって言いたかった


こういうこと言いたかったんです
インデントについて考える 後編
66: 仕様書無しさん 投稿日:2012/03/15(木) 01:23:10.20
>>65
正しい日本語使おうな。
たしかに、タブとスペース混ぜられたり、後ろに不要な空白残したりされると殴りたくなる。


てめーのことだぜ先輩!
57: 仕様書無しさん 投稿日:2012/03/14(水) 16:20:32.15
みんなそれぞれ意見がバラバラなのが面白いぜw
管理人より:本来の「インデント」というのは、制御構造の中身などを明らかにするため、行頭を字下げすることです。冒頭で挙げた「=」の位置を揃える式のアレは「インデント」とは呼ばないです。(よね?)
でまぁインデント幅はそれぞれ「2派」「4派」「8派」、インデント手段は「スペース派」「タブ派」にきれいに別れます。宗教の宗派みたいなものです。
ちなみに管理人はインデントは「タブ派」かつ幅は「2派」です。縦位置の整形はあまりやらないけど、やる場合は「スペースで揃える派」です。
41: 仕様書無しさん 投稿日:2012/03/13(火) 06:49:57.92
2行以上のコメントを//で書いてあるとイラッとくる
45: 仕様書無しさん 投稿日:2012/03/13(火) 19:40:55.20
for(i = 0; i < max; i++);  ←※
{
	// 云々
}
こーゆーミスするなら中括弧の前に改行入れんじゃねえよハゲ
管理人より:1行目の末尾「;」はいりません。管理人もこういうスタイルはムダに行数が増えるためあまり好きではないですが、中括弧の開始と終了を揃える意図があるものと思います。
58: 仕様書無しさん 投稿日:2012/03/14(水) 16:49:24.33
コーディングスタイルはしばしば宗教に例えられる
59: 仕様書無しさん 投稿日:2012/03/14(水) 17:57:48.38
コーディングルール・コーディングスタイル議論は山のようにあって正直ウンザリなので、このスレでは「イラッつとする」かどうかのみで判断した感情的なレスをお願いします
61: 仕様書無しさん 投稿日:2012/03/14(水) 19:41:56.11
いまやってるphpのシステムで関数の引数を
function hoge($arg1, $arg2, $arg3)
{
	$weight = arg1;
	$height = arg2;
	$age = arg3;
}
と必ず$arg1, $arg2…みたいな意味の無い名前の変数でうけて、関数の中で意味のある名前の変数に移してるんだけど、普通に
function hoge($weight, $height, $age)
でいいじゃないか。
なんか意味あるのか。
64: 仕様書無しさん 投稿日:2012/03/14(水) 20:42:50.52
>>61
Perl厨のせいなんじゃね?
Perlには仮引数がないから
sub hoge {
	$weight = shift;
	$height = shift;
	$age = shift;
}
ってやるよ。
70: 仕様書無しさん 投稿日:2012/03/15(木) 11:36:52.65
bool hoge(){
	if( fuga() != false ){ return false; }
	else{ return true; }
}
なぜreturn !fuga();としないのだ……。
72: 仕様書無しさん 投稿日:2012/03/15(木) 12:26:17.66
>>70
A:論理値をリテラルと比較するような阿呆だから
71: 仕様書無しさん 投稿日:2012/03/15(木) 12:14:05.59
/* 2011.3.11 なんかエラーになるのでとりあえず外す
	return false;
*/
	return true;
}
73: 仕様書無しさん 投稿日:2012/03/15(木) 13:45:30.08
>>71
3.11・・・
74: 仕様書無しさん 投稿日:2012/03/15(木) 14:00:09.04
>>73
rev.666 2011-03-11 15:47 
ほぼ100%職場おわるので中間コミット
SyntaxError出るけどこれ以上はやばいのでかんべんしてください
去年下請けと組んでやった案件の作業ログにこんなのあったの思い出したわ
管理人より:2011年3月11日の大地震の時ですね。東京もかなり揺れたと聞きますが。
78: 仕様書無しさん 投稿日:2012/03/15(木) 20:25:45.12
修正履歴なんて入れてないでソース管理ツール使えよって感じだけど、ドカタの現場だとただのファイル共有ツールって認識だし使っても同じか。
79: 仕様書無しさん 投稿日:2012/03/15(木) 21:04:29.64
わざわざソース管理ツールをインストールするの面倒じゃん
おまえらすぐ管理ツールを変更しちゃうから古いソースを見る時に大変なんだよ
80: 仕様書無しさん 投稿日:2012/03/15(木) 21:12:59.59
やっぱり新しいツールや技術についていけない無能に合わせるしかないよな
82: 仕様書無しさん 投稿日:2012/03/16(金) 00:11:44.00
俺もちょっと前にPHPで
return hoge ? false : true ;
って書いてた。恥ずかしい
83: 仕様書無しさん 投稿日:2012/03/16(金) 06:55:35.96
return func();
とか、気持ち悪くないか?
84: 仕様書無しさん 投稿日:2012/03/16(金) 11:17:23.41
返却値の柔軟性を奪っておいた方が後々不具合が少ない気はしないでもない。
管理人より:PHPは変数なら「$hoge」、関数の実行結果なら「hoge()」と書かねばならず、関数オブジェクト…のような概念はないので、»82さんの例は「hoge() ? …」のタイポかと思います。
85: 仕様書無しさん 投稿日:2012/03/16(金) 19:59:37.11
/*2008.01.01 障害対応 start */
/*2009.09.15 障害対応 start */
/*2010.12.11 障害対応 start */
/*2011.02.13 障害対応 start */
return true;
/*2011.02.13 障害対応 end */
/*2010.12.11 障害対応 end */
/*2009.09.15 障害対応 end */
/*2008.01.01 障害対応 end */
こんなのを見ると腹立つ
消すなって言われると帰りたくなる
86: 仕様書無しさん 投稿日:2012/03/16(金) 20:10:41.24
>>85
え?なんで修正した箇所のソースが残ってないの?
普通はコメントアウトして残すだろ?


コメントアウトした部分を削除する時は日付も削除するし、そんな状態にはならない
89: 仕様書無しさん 投稿日:2012/03/17(土) 01:07:19.71
>>85
そもそもSubversionとか使ってないの?
88: 仕様書無しさん 投稿日:2012/03/16(金) 20:20:45.49
正月から大変なんだなw
90: 仕様書無しさん 投稿日:2012/03/17(土) 01:09:31.26
そこかよw
管理人より:Subversionはコード管理ツールのひとつ。最近ではGithubが流行な模様。
81: 仕様書無しさん 投稿日:2012/03/15(木) 21:13:26.95
名前がファミリーネームどころかファーストネームですらなく、親しい間でなければ使わないような愛称

鼻穴に5センチほど割り箸突っ込んでグググと水平に近づけて、後遺症が残らない程度に苦痛を与えることで反省を促したい
92: 仕様書無しさん 投稿日:2012/03/17(土) 10:36:26.07
ありきたりだけど、コメントが疑問系のやつ
一回それに対する回答コメントがあってワラタ
100: 仕様書無しさん 投稿日:2012/03/19(月) 15:44:51.04
スレタイの「イラッつと」は「イラッと」の間違い?
なんかいらっと来た

なんか以前もどっかで同様のことを書いたような気がしますが、プログラマーの間ではこういう、コーディングスタイルの良し悪しについては、ほとんど宗教論争なわけですね。
別に正解というのもないです。
そんで、「見やすい」だとか「見づらい」だとかは本人の主観になるので、このスレのようになるわけです。

本文でも書いたけど、管理人は以下の
function hogehoge(...)
{
	...
}
↑このスタイルがあまり好きではないです。まぁでも「イラッつと」するほどではないです。
あと、こゆ感じの
var hogehoge=1;
みたいに演算子の前後をツメツメにするのも、見づらいですね。
しかしその一方で、
hogehoge( Math.round( fugafuga() * 20 / 2 ) );
みたいに、カッコの前後にスペース入れられるとなんかイヤだ、みたいのもあるので、やっぱり好みかなぁと思います。

以前の記事のコメント欄では「コーディングルールで統一しろ」という意見が多かったんですが、個人的には「キリがないだろ」とも思うので、ちょっとしたことにイライラしてモニタひっくり返してしまう、殺伐としたマの精神状態をどうにかした方が建設的だと思うんですよ、ええ、ええ。
12.6追記:当記事を「カナ速さんの4コママンガ」にてご紹介いただきました!どうもありがとうございます。マンガがあるなんて、スゴイ!
12.10追記:当記事を「駄文にゅうす」にてご紹介いただきました!いつもありがとうございます~
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
Dustin Boswell Trevor Foucher
オライリージャパン
売り上げランキング: 1,630



人気サイト様 最新記事

博士ちゃんねる ヘッドライン

    • ※1 : ドクター・ノオ・ネーム
    • 2015.12.7 8:56
    雑誌などデザインでもスレ40みたいにtabで揃えたりすると修正はたいへんですが見易さ1番で使ってます。イラレですとtabとspaceと半角スペースを別色で表示するモードがありまして、ぱっと見で把握しやすくはあるんですよね。
    あと一般的な文字組みルールってので文章のカンマや半角等々統一した扱いをしましょうって基本的な本があるので興味があればどうぞ。こういうのは社内で統一し協力してデータを極力修正しやすくするのが第一かなあと。面倒な所で時間は取られたくないもんですね。
    気楽に書いちゃいましたがマさんの場合は文字数が半端ないので比べ物にならない位大変な作業であるのは良く分かります。
    • ※2 : ドクター・ノオ・ネーム
    • 2015.12.7 17:14
    大体の人は演算子の前後スペースでカッコの後ろはスペース入れないんじゃないかな
    と思った俺日曜プログラマー
  1. >修正はたいへんですが見易さ1番で

    まぁ確かに見やすいんですよね。
    管理人もかつてはよくやってましたが、なんでやらなくなったのかというと、Googleのコーディング規約を見てから。
    で、やめてみたらわりと心情的にはスッキリした…という感じです。なにかやましさを感じながら縦位置を揃えてたのかもしれません。
    ----------------------
    >演算子の前後スペースでカッコの後ろはスペース入れない

    通常はそうです。が通常でないひとが多いのも事実です。
    • ※4 : ドクター・ノオ・ネーム
    • 2015.12.11 2:16
    >70
    の意味が解らないなぁ
    そのままなら短く出来るのは解るけど
    変更があった時にthenとelseで調整できるから楽な気がするんだけど
    この仕様の状態なら無駄に長くなっている
    というのは解るんだけど
    >論理値をリテラルと比較するような阿呆だから
    この部分が解らない
    又ここを覘くかは解らないからあれですけど
      • ※6 : ドクター・ノオ・ネーム
      • 2015.12.12 21:02
      こういうマはマと呼んでいいものか、美系のオレでもわかると云うのに・・
      自分の宣言した変数以外は何も存在しないと思ってるんだろな
      使い終わったものを消し忘れたり単純なことで頭かかえそう
    • ※5 : 農耕採集女将
    • 2015.12.11 21:43
    可愛い寝子に惹かれてスレッドを開けたら・・・・
    文系頭には目眩のするような数式?の羅列

    猫があ~と

    「宇多天皇御記」
    寛平元年二月六日。朕閑時述猫消息曰。驪猫一隻。大宰少貳源精秩満来朝所献於先帝。

    愛其毛色之不類。餘猫猫皆淺黑色也。此獨深黑如墨。爲其形容惡似韓盧。・・・



    云々と真似ようぞ。
  2. >70 の意味が解らないなぁ
    >美系のオレでもわかると云うのに・・

    実は管理人も「論理値をリテラルと比較」という部分はよくわかんなくてピックアップしてます。
    「リテラルと」比較してないのは確かなので、たぶん「リテラル」という言葉を勘違いしてんじゃないかと思います。
    -----------------------
    >文系頭には目眩のするような数式?の羅列

    この漢文というのはわからなくても、なんとなく意味が伝わるからいいですよね。
    黒い毛並みの珍しい猫の話なんでしょ。
      • ※8 : ※6
      • 2015.12.14 2:38
      リテラルとか言ってる恥ずかしい人は>72ではないでしょうか?
      論理値を変数だかよくわからないものと比較してる人に「なぜ~」と言ってる方が>70かと、私も>70はわかりますが>72はわかりません
    • ※9 : ドクター・ノオ・ネーム
    • 2015.12.14 19:02
    前に障害者でプログラマ求人がないのを愚痴っていた者です。
    無事にプログラマとして就職が決まりました。ここでまとめられているようなことが職場ではないように祈っています……

    私はタブは4文字派です
  3. >私も>70はわかりますが>72はわかりません

    ※4さんもそういうこと言いたいんだろうなと思ったんですが、まぁ細かいことですかね。笑
    -----------------
    >無事にプログラマとして就職が決まりました。

    おー!おめでとうございます!これからIT戦士として、共に前線で戦いましょう。
    「命をくれてやれ!!」(アカン)
    • ※11 : ドクター・ノオ・ネーム
    • 2015.12.27 20:49
    エディタはEmacsだからマクロで「=は揃える派」
    ※場合によっては、PHPの「=>」も揃えるし、行末や空行のスペースorTABはreplaceする
    誤解の無いように言っておくと、別にスペースを叩いて目視で揃えるわけじゃないし
    逆に揃っている「=」を戻すのも、任意の文字列をマウスでコピー&ペーストするより時間はかからない。
    むしろ複数行の文字列の中から任意の文字列をShiftを押しながら選択するより早いかもね

    ちなみに、スペース4派。リソースを食うjsとかはminifyしない場合はスペース2
    • ※12 : ドクター・ノオ・ネーム
    • 2016.2.11 13:01
    >27
    定数宣言で=の位置を縦に揃えるのがあまり好きじゃない

    やたら変数名と値が離れていると認識し辛い
    str1             = 18
    hoge             = 2109
    fmaxlogins          = 32011
    dot_call_of_statics_err_value = 19212

    というのが複数有るとどの変数が何の値になっているか識別しづらい
    人間は近いもの同士を一つのセットとして認識する機能が有るから
    こういうのは間違いを誘発し易い
    hoge = 2109
    こう書いてあれば直ぐに認識出来る
    一件綺麗に揃っているというのは良さそうに見えるけどそうじゃない
    オブジェクト指向プログラミングでは変数とそれを操作するメソッドを近くに配置する
    それをクラスとするけど
    人間は余り離れると認識から遠ざかりやすいのでセットにしている
    見た目を綺麗に整えるのは非常に役所的で
    今までそれで良い評価を得られてきたから
    そうじゃないと絶対いけない
    という強迫観念から出ているに過ぎない
    産業革命の話読んでてアジア圏は役人世界だから産業革命がなかったんじゃないか?
    みたいな話を見てて
    試験による得点を取る為に良いとされることを絶対視している信者の考え方なんじゃないかと思う
    excel方眼紙なんかをコーディングに持ち込んでいる例だろうと思う
    • ※13 : ドクター・ノオ・ネーム
    • 2017.5.4 1:23
    >※7
    古い話題で恐縮ですが、多くの言語でtrue, falseのことをboolean literalといいます。

    「論理値をリテラルと比較」というのは、Xがboolなら「if (X)」または「if (!X)」で十分で、「if (X == true)」のようにブールリテラルと比較するのは蛇足であるということだと思われます。
  1. トラックバックはまだありません。


コメ欄での議論はおおいにけっこうですが、当サイトではドクター同士の罵り合いは禁止となっております。反論する際には、相手の意見・人格を尊重し、どうぞ冷静に。