1 :
仕様書無しさん :
2012/03/10(土) 22:20:29.12 文法的には何ひとつ間違ってはいないし、本人なりに見やすくしようとする意図は汲み取れるのだが、 どうにも気持ち悪くて、「修正してやる!」と叫びながらキーボードを激しく連打したくなる そういう薄気味悪いコーディングスタイルを発見したら書き込むスレッド
for(i = 0;i < IMAX;i++){・・・}
#define { begin #define } end
pBase = (条件) ? new Child1() : new Child2();
スレタイがイラッつとする
☆ × ' . × x ` . x ヽ . ☆ X ,. -. ‐'´ ̄``丶、 ノ} X /} /: : : : : : : : : ーヘ × / //: : : :l: .:. .} | . : : : : } . . ゜ _ノ_,ム′: : : |:::::::/! l.::. : ! /: :\ , ☆ _/ /,. -‐〉 : : :_ !:;イ¬.|:i::: |i.|. :.i::: : : ヽ ; ☆ . . ,. '´!{ ゝ-‐''^¨二.ノ:〔__− V!::!LTV{::: : : :.', ×x . ぃ .イ::. : : |⌒` }:リ'示Y1:: : : i } x × . '´ ,. 介iー-、 {:::::::::. : : ! ^' ヒ'リ ',.|:::. :.. :.!リ X X / /ヽ' L! ヽ. Y::::i::::. .::. |r:ゥ- 、' `^ /:::l::::.::::.x:リ′ ; ☆ イラッ☆ x / / /⌒ヽ 込Jヽ:ト:{>、:ィ八_ ,.‐く イ:ィ:::!x::X::/ ゛ i'´ /-r‘ー、 ヘ-┴‐〉 `'i¬ ヘ.__{:::::::}.彳〔__レ1::ル'゜ ゜ . ー 、 --−'´ コ:..:.}: \ 丶 .l | -、匸⌒´:_;-、ノ }_ ´ ゜ ×. `ヽ、 └;.:. .. } 〉 ヽ.| 〈__:,.イv/´〕、冫`i x ☆ ` ¬ゥ´:..:....:..:..:..: ,ノ、 \ { ! {.{j_/,ィう′ ! x ' Y:..:..:..X:..:..:.∠.._ ヽ.} |. } `マ^V | X , ゛ヽ:..:..:..:../ ,.⊥_ /小\¬-{ ∨ヘ._,. -‐¬、 ☆ ` ー′ j:..:..:..:Y´:´/ハ卜':..! :ヽ ∧::ヘ .:..:... } /:..:..:..:..j/:..:.`:..:´:..:..i :..:ト-_ノ マ'’:..:..:..:..ヘ
#define private public
String hoge = null ; hoge = getSQL( flg1 flg2 ) ;
GNUの字下げスタイルはなんか嫌だ
コードの書き方にこだわるようじゃ3流だな。 こだわるべきはアルゴリズムだろ。 そこがきちっとしていればコードが短くなる。コードが短くなれば自然と読みやすくなる。 早くその領域に達するといいな。
他人のコードを読んだことないの?
>>11 既知のパターンで書かれているかも重要
パターンとパターンをつないでいくような作りであると、読みながら何をしたいのかが分かる。
>11 コードを短くするにはアルゴリズムではなく 関数にすることが重要。 どんなに長いコードでもたった一行にできる。 しかもすごく読みやすくなる。
というか設計だな
>>1 の条件に該当するヤツは
一行が長くならないようにコメントを適当に改行してるんだけど
単語の途中を改行でぶった切られてのぐらいしか思いつかない
あとはイラッっとするので
> 本人なりに見やすくしようとする意図は汲み取れるのだが
で該当したものはない
古来から言われていることだが、ポインタ変数と普通の変数をいっぺんに宣言するとまぎらわしい。
>>17 int* ptr_A, B;
こんな感じ?
K&R流では
int *pa, b;
だね
*(アスタリスク)の前に空白を入れるのか後に入れるのかという違いだけど、
>>18 のスタイルの発祥はどこなんだろ?
>>18 >int* ptr_A, B;
これで両方ポインタになるべきだと
俺は思うのだが
クラスのプロトタイプ宣言ファイルにそのクラスが使う複数の構造体の宣言を一緒に入れる クラスのプロトタイプ宣言のなかにそのクラスが使う構造体の宣言をごっそり入れる どう思う?
>>20 ていう思い違いをしやすいから*は識別名にくっつけろ、という話じゃね?
いやそうじゃなく文法自体が不適切なんじゃないのかって話
>>23 そりゃあ「コンパイラに優しい言語仕様」を目指したわけだし
てかそもそもそういうスレじゃないし
25 :
仕様書無しさん :2012/03/12(月) 02:04:41.58
if(hoge != null) { if(hoge.length() > 0) { // 糞処理 } } ネスト深くせずreturnしてほしいわ if(hoge != null && hoge.lenght() > 0) { return; } // 糞処理
定数宣言で=の位置を縦に揃えるのがあまり好きじゃない
Linux環境でC++ソースの整形コマンドってなかったっけ?
>27 俺は逆に、揃えてないほうが不快。
揃ってると見やすいけど修正しづらい
後で長い名前の定義を足した時に揃え直すか迷う
>>27 and
>>29 ,30
縦揃えにTabを使わないのが問題なんじゃね?
自分はタブ幅4(:se ts=4 sw=4 ai)だけど、全く苦にならない
俺はインデント以外でタブ文字使われるのが大嫌い
キナ臭くなってまいりました
タブサイズを8以外にしてるのがイラっとするわ。
indentのデフォルトは2じゃね?
=の位置で簡単に揃えられない エディタを使う奴が無能なだけ。
そもそも変数名の長さがまちまちなところに問題の根本が潜んでいる気がする
だからコボラーはCOL001,COL002,COL003…みたいな変数にしてたんだろ
エディタ表示部が勝手に検知して勝手に揃えて表示するというのはありなような気はする 画面表示がディスク上のファイルのバイナリ列と完全に一致しなければならないわけじゃないしな
2行以上のコメントを//で書いてあるとイラッとくる
>>39 変数の長さを規約で決めてしまうのか
ソースを見やすくするっていう規約の存在意義を考えるとアリだな
>>36 インデントは2でも4でも8でもいいけど、タブのサイズを4とかにしてタブでインデントしてるヤツは
イラっとするわ。
>41 それは//のほうが正しいだろ。 /*〜*/で普段のコメントが書いてあると、一部の処理を殺して試したいときに、普段のコメントがそれを邪魔する。 関数の中身に書くコメントは//じゃないと邪魔だ。 JavaDoc形式については別だぞ。
for(i = 0; i < max; i++); ←※ { // 云々 } こーゆーミスするなら中括弧の前に改行入れんじゃねえよハゲ
てへぺろ;-P
>>43 はRuby使いなんじゃね?
Rubyには標準ライブラリを含めてインデント2で書かれたコードが多い
インデント2は明らかに少なすぎ。 デザイン的に空間が分かれてるように見えない。
生ポインタとusingを禁止で全て書き直せとのお達し 配列長が必要なので、shared_arrayは使えない vector<Hoge*>* hoge; ↓ boost::shared_ptr<std::vector<boost::shared_ptr<Hoge>>> hoge; マジキチ 下手すりゃdelete漏れを探すよりもカオスなことになりそうだぜ
>>47-49 タブサイズは8に決まってるだろ。
タブサイズを8以外にしてるやつは迷惑だわ。
インデントを8以外にしたいときにはスペース使え。
>>52 どっちにしても面倒だし、チカンするくらいならエディタの設定を変えたほうが速いだろ。
インデントはタブサイズの設定関係ないだろ インデント以外のレイアウトにタブ使うヤツがクソ野郎
みんなそれぞれ意見がバラバラなのが面白いぜw
コーディングスタイルはしばしば宗教に例えられる
コーディングルール・コーディングスタイル議論は山のようにあって正直ウンザリなので、 このスレでは「イラッつとする」かどうかのみで判断した感情的なレスをお願いします
>>56 関係あるだろ。
タブサイズ4前提でインデントしてて、8に設定してあるエディタで見ると崩れるやつとかいる。
いまやってるphpのシステムで関数の引数を function hoge($arg1, $arg2, $arg3) { $weight = arg1; $height = arg2; $age = arg3; } と必ず$arg1, $arg2…みたいな意味の無い名前の変数でうけて、関数の中で意味のある 名前の変数に移してるんだけど、 普通に function hoge($weight, $height, $age) でいいじゃないか。 なんか意味あるのか。
コードを追うと突如現る謎の空白行 ふと右を見ると変数の頭文字らしきものがニョキっと生えてる タブ8とか3階層ネストするだけで宇宙に行ってまうわ 気持ち悪いったらありゃしない
Full HDなモニタ買ってもらえ。
>>61 Perl厨のせいなんじゃね?
Perlには仮引数がないから
sub hoge {
$weight = shift;
$height = shift;
$age = shift;
}
ってやるよ。
>>65 正しい日本語使おうな。
たしかに、タブとスペース混ぜられたり、後ろに不要な空白残したりされると殴りたくなる。
てめーのことだぜ先輩!
いえ、わたくしは、イライラしながらフォーマッタでポチポチ揃えてる側の人間ですが。
昔はタブサイズは8にするべきだって思ってたんだけどね 今は1か2がちょうどよく思えてきたよ
タブのサイズを1に設定してタブを使うなら、ふつーにスペース使ったほうがよくね?
70 :
仕様書無しさん :2012/03/15(木) 11:36:52.65
bool hoge(){ if( fuga() != false ){ return false; } else{ return true; } } なぜreturn !fuga();としないのだ……。
/* 2011.3.11 なんかエラーになるのでとりあえず外す return false; */ } return true;
>>70 A:論理値をリテラルと比較するような阿呆だから
>>73 rev.666 2011-03-11 15:47
ほぼ100%職場おわるので中間コミット
SyntaxError出るけどこれ以上はやばいのでかんべんしてください
去年下請けと組んでやった案件の作業ログにこんなのあったの思い出したわ
修正したり追加した行に日付と名前が書いてあるのは お前の名前分かっても意味無いんじゃ、って思うな。
日付は何故そう修正したか雰囲気がわかったりするから無いよりはマシ それよりはまともなコメントを書けよハゲって話なんだが 担当者を入れるのは責任問題の押し付け合いをするためのものと理解している
日付と名前は必須だろ どこにバグがあるか特定する時に一番役に立つ
修正履歴なんて入れてないでソース管理ツール使えよって感じだけど、ドカタの現場だとただのファイル共有ツールって認識だし使っても同じか。
わざわざソース管理ツールをインストールするの面倒じゃん おまえらすぐ管理ツールを変更しちゃうから古いソースを見る時に大変なんだよ
やっぱり新しいツールや技術についていけない無能に合わせるしかないよな
名前がファミリーネームどころかファーストネームですらなく、 親しい間でなければ使わないような愛称 鼻穴に5センチほど割り箸突っ込んでグググと水平に近づけて 後遺症が残らない程度に苦痛を与えることで反省を促したい
俺もちょっと前にPHPで return hoge ? false : true ; って書いてた。恥ずかしい
return func(); とか、気持ち悪くないか?
返却値の柔軟性を奪っておいた方が後々不具合が少ない気はしないでもない。
/*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 え?なんで修正した箇所のソースが残ってないの?
普通はコメントアウトして残すだろ?
コメントアウトした部分を削除する時は日付も削除するし
そんな状態にはならない
>>86 >普通はコメントアウトして残すだろ?
普通は…な…。
正月から大変なんだなw
>85 そもそもSubversionとか使ってないの?
そこかよw
全体の設計があきらかにアレなコードで いちいち修正をコメントで残されてもなー
ありきたりだけど、コメントが疑問系のやつ 一回それに対する回答コメントがあってワラタ
LINQの使い方を知って以来、foreachまみれのソースは基本的にイラつく
foreach?gotoでループを表現しているコードをいじらされるよりだいぶマシだな
C#にはポインタはありません(すくなくとも表面的には) それよりもここのタイトルの「イラッつと」って書き方にいらっと来た。
>>97 あからさまに仕様上あるわけだが>C#のポインタ
そんなことより、スレタイに関しては
>>5 で既出なんだが
ホントに直近のレスだけしか見てないんだなあ(´・ω・`)
何のひねりもないマジレスにイラッつとした
100 :
仕様書無しさん :2012/03/19(月) 15:44:51.04
スレタイの「イラッつと」は「イラッと」の間違い? なんかいらっと来た
if (0 == hoge)
102 :
仕様書無しさん :2012/03/19(月) 19:25:54.13 BE:1248768735-2BP(0)
>>101 if (0 < hoge && hoge < fuga)
これは許してちょんまげ
もしかして、"<" は良くて ">" は使わないの?
はぁ?
107 :
仕様書無しさん :2012/03/19(月) 21:59:50.74
void hoge() { if(this.expr) return; hogehoge(); fugafuga(); ... } 俺も7年前までこう書いていたんだが、 今ではイラッとまで来ないが、なんかもやっとする。 入口一つに出口一つ、例外的に途中抜けするから例外、 と考えているんだが、そういう考えは少数派なのだろうか
>>107 return文の利用を気にしているのかな?
それを使わないことでネストが浅くなる場合もあるよ
以下は、ソート処理で使われる比較メソッドの例
def compare(x, y)
gender_result = x.gender <=> y.gender
return if gender_result == 0
age_result = x.age <=> y.age
return if age_result == 0
x.name <=> y.name
end
昔のgoto文不要論争と同じように、return文も全面的に禁止するのではなく、
必要に応じて使い分ける(=必要な場合に限って使う)ことを考えればいいのではないかと
109 :
108 :2012/03/19(月) 22:17:52.90
ミスがあったのでコードを訂正(なお、言語はRuby) def compare(x, y) gender_result = x.gender <=> y.gender return gender_result if gender_result == 0 age_result = x.age <=> y.age return age_result if age_result == 0 x.name <=> y.name end
>>107 > 入口一つに出口一つ
これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
イラッとする。
>>110 >これを守るためにフラグ変数導入したり、do〜while(0)使ったりするコードは
>イラッとする。
御意
if(hoge) goto exit;
>>107 出口一つにしたければ、
void hoge()
{
if(this.expr) goto EXIT;
hogehoge();
fugafuga();
...
EXIT:
}
こう書けばいいよw
つか、returnなんてこの書き方の短縮形でしか
ないんだから出口を一つにする意味はない。
場合わけが多岐にわたり、なおかつ「通常」の抜け方が唯一の関数だと 末尾に「通常」のreturn、そこまでのあちこちにif文と抱き合わせで複数のreturn というのは必然
>>101 これをコーディング規約にするのは
「ウチのプロジェクトには、代入と比較を間違える間抜けがいます」
つってるようなもんだよなあ。
代入と比較を 書き 間違える人なら 全員当てはまると思いますが?
たしかVisualBasicだと比較も = 1個だけだったと思う BASIC系全部そうかな
BASICは、ifで代入できるなんて あほらしい仕様がないからね。
>>115 は根性と精神力でプログラミングするんだろうなあ
お近づきにはなりたくない
まぁ普通は静的解析ツール使ってチェックするよなぁ。
>>101 みたいなプログラマの注意力に依存したスタイルは今どき流行らないよ。
>>101 頭の中で0がhogeだったらって考えちゃうけど、こう書いたときにどう考えてるんだろ
>>113 その手の奴で、それぞれ脱出する箇所によって終了処理が異なるから
EXIT1: EXIT2: …と、returnの前に4つくらいラベルが書かれたソースを
見たことがあるな。
ネストが深くなるのがそんなに嫌なのか。
ネストが深くなっていいことは一つもないからな。
>>119 なんで根性と精神力があると間違えないと思うの?
バカなの?
if (sysfn(...) < 0) {エラー処理} //sysfn()は、エラー時に"-1"を返す関数 なぜすなおに-1を使わない?
ネットで似たような処理を探してきて、意味もわからず貼り付けて、 「出来ました」 とかいうスタイル。 技術者なめとんのか
>>125 負の整数をエラーコードとしている場合、新たなエラーコードが追加されたときにもエラー処理を実行させるため
128 :
仕様書無しさん :2012/03/20(火) 16:13:54.00
>>103 むしろそうしないコードにイラッつとするわ
129 :
仕様書無しさん :2012/03/20(火) 16:14:36.45
>>124 こんなもん静的解析ツールが見つけ出してくれるだろ
>>127 sysfn()は、「失敗時に-1」と定義されたシステムコールです
131 :
仕様書無しさん :2012/03/20(火) 19:38:01.93
システムコールの仕様は一生変わらないとお思いかね
変わってからまたおいでw
「失敗Aが-1だけど失敗Bは3を返す」 という構造になる確率よりも 「失敗Aが-1なので失敗Bは-2を返す」 という構造になる確率のほうがたぶん高い とにかく失敗ならヒットしたいという場合、とりあえず負かどうかチェックするのはいちおうはアリだ 「失敗なんだけど、既存のエラー処理では処理しきれない新失敗」という可能性もあるんだけど、 それはたぶんエラーコードがなにになっても結局うまく動かないだろうからどうでもいい
>130 それならsysfn()のヘッダに #define SYSFN_ERROR -1 って書かれてるだろうから俺はそれを使う。 書いてなければsysfn()を作った奴が無能。
xxxxx{ } xxxxx( ){ } カッコの列が違うと読みづらくて仕方ない
int mCode = 0; // 変数mCodeの宣言 そんなの見りゃ分かる。 mCodeが何の変数かを書いてほしかった。
>>136 もう一歩踏み込んで変数名だけでわかるようにしないと
日本語で書かないとわけがわからなくなる値の入る変数名というのは結構あったりする
・
普通にそう考えられないやつはセンスないよね。
CのベテランがJavaにきても成功/失敗を、0/-1で返してたな。 関数名も chkHoge() みたいな感じだし。 イラっとするっていうか懐かしい感じがした。
exit 1 が失敗を現す文化がですね
>>25 式の評価順が気になって安全に振ってんだろ
>>54 これって、typedefつかっちゃダメなのか?
ループの全てをdoループで処理したらイラッとするって言われた。 forとかwhileとか使えって(´・ω・`) ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。 ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたりとか、見やすいと思うんだけどな。 イラッとするもの?
たかがループで > ループ前に変数初期化、ループの最初と最後にifで必要に応じてbreak。 > ループカウンタ進めるタイミングとか、ループ抜ける条件を一覧(風)に並べられたり こんなことやらないといけないのは、何かおかしいと直感的に感じる。 条件などをきちんと整理すれば普通の forとか whileになるんじゃないか?
いちいちインクリメンタに意味のある名前をあたえているせいで forの宣言行が長くなっていると予想
K&R Cっぽい関数宣言してる人がいてビックリしたことがる
C++やC99 or laterなら問題になるがC89までなら問題ない それより関数定義のほうを見たらびっくりするだろ
>>146 > ループの全てをdoループで処理したらイラッとするって言われた。
イメージが沸き辛いんだけど、
for (int i = 0; i < N; ++i) { /* something */ }
を
int i = 0;
do {
if (i >= N) break;
/* something */
i++;
} while (true);
みたいに書いてるのか?
ループの最後にifってのがよくわからんが。
もしそうなら今までで1、2を争うイラッつとレベル
>>146 イラッつとするって言うか、死ねって思う。
do whileだと終了判定とカウンタの処理の2か所でバグ仕込む可能性が上がって
解析する場合に余計なコストがかかる。
ただのfor文だと分かった場合であっても、それ以前と仕様が変わって
そうせざるを得なかった場合まで考えるから鬱陶しい。
153 :
仕様書無しさん :2012/03/21(水) 17:20:34.42
>>146 命令の数が増えたら読みにくいじゃん
ループはforで統一するのがいいんだよ
>>154 えっ?そんな理由でforに統一してるの?
絶対一緒に仕事したくないなぁ〜
新着があるはずなんだがぜんぜん表示されない…
whileしか使わない
ifとgotoしか使わない
俺はwhile統一派 変数初期化やインクリメントは単独の式でやったほうがいい
forとwhileの統一なんかは別にどーでもいいが do whileで統一はまじでやめほしい
until文とか出てくると紛らわしい。
>161 forとwhileの違いごときで体感レベルで遅くなるような処理系って現存するのか……?
165 :
仕様書無しさん :2012/03/21(水) 23:39:43.30
whileは変な書き方したら遅くなりそうな気はするな
ってもJUMPするだけじゃん
for(;;)は条件式の省略が認められてるが、while(true)は定数のboolで条件式を代用してる
>>164 現存するかは知らんけど、数年前のC++ Builderに付いてたコンパイラは
forで加減算してる場合しかループ展開しなかった
gotoが使える言語で 1回だけしか実行しないループとbreakで疑似goto 多重ループを抜ける為の大量に設置された判定文 gotoは使わないでね☆ミみたいなのにとらわれすぎだと思った コメントにしっかり書くならいいと思うんだけどなぁ
>>169 複数回のメンテを受けた後がGOTOの本領発揮
共同作業でGOTO使うなっていうのは鉄の掟
あがっている例ではその部分を関数化すれば解決するんじゃないだろうか
returnによるgotoも賛否がわかれる所ではあるけれど
>breakで疑似goto 別モンだろw
>>172 上から下に流れるだけのgotoと言うかなんと言うか
どっちかと言うと1回のループでなんでこんなもんが…と混乱した後に
「ただbreakで飛びたいだけでしたーwww」ってのがな…
難読化技術はとどまることを知らない
goto使うなというのは、あなたのために言っているのではない あなたの次の次の次の人くらいのために言っている
> 1回だけしか実行しないループとbreakで疑似goto なんで if 使わないの?
forだと2回条件を評価しているんだがifだと1回だよね
エラー時に関数抜ける場合とかの解放忘れ防止に goto もありかな、と思う事はある。
>>175 コメントはしっかり書くと言t
俺のコメントが…消えた…?
関数にするほどの処理じゃないor関係性があった処理で戻り値無しの関数終了をイメージした何かだったんだろう
調査だったからそれで動いてたし触らないが吉としてスルーした
>>178 解放なんて例外でキャッチしてやればいいじゃん
というかそれ以外の方法だとどうやっても抜ける可能性でるだろ
例外が使えない状況もあるからね。
>>180 Exception Safetyって知ってる?
知らずにレスしてるならもっと勉強しろ。
知ってるなら、そう簡単な話ではないことくらいわかるだろ。
gotoが「絶対ダメ」なのなら、例外だって「かなりダメ」だろう どっちにしても大域脱出なのは変わりがないのだから、極めて慎重に設計されて極めて慎重に使用されるべき 「gotoはダメだけど例外ならいいよ」なんてことはあって欲しくない あって欲しくないってことは実際にはあるってことなんだが
まぁgotoが許されるのは多重ループの脱出か try-catchが無い場合の例外処理に限られるわな。 goto禁止ってのはそもそも、gotoが悪いんじゃなくて 処理ブロックの中を行き来するのが悪いって話だからなぁ。 ダイクストラ本人はgotoがダメとは言ってないし。 あと、breakは本来の意味では問題あるgotoになり得ない。 if( x ) { goto label1; label2: goto label3 } while( n ) { label1: goto label2 label3: }
カッコの内側にスペース入れてるのとカンマの後ろにスペース入れてないのがイラっとするわ。
これか foo( aaa,bbb,ccc ) なんか、AKBにそういう顔をしたメンバーが居るそうだな ( ∵ )
ミサワさんか
浜ちゃん
a = a + 1;
>>190 Luaとかはそう書かないとダメだと思った
>>190 宣言型言語に慣れるとイラッとするのかもしれない
【関数型言語(Haskell)】
a' = a + 1
【論理型言語(Prolog)】
A1 = A + 1
1ならインクリしろって事なのかマジックナンバーだからなのか 一定の数値足すならそれが記述方法として正しいし理解しやすいと思う
あぁ同じ変数に突っ込むってのもあったか 何かしら足してるなら別物になる事が多いしなぁ…
phpばっかやっとるやつは、 きたないな、ソースも顔も。
金を儲けると顔がきたなくなっちゃうよね
// TODO 自動生成されたメソッド・スタブ
// 仕様追加対応 if ( id > 11 && id < 13) { }
コメントをテンプレートを使って強制するとおこりがちなこと /************************************ * 関数名 Initialize * 日本語名 初期化関数 * 概要 初期化を行う * 機能 パラメータの初期化 * 備考 特になし *************************************/ InitStatus (...) { }
たいてい、コメントブロックと関数の間に //Initialize (...) { が存在する
\ ヽ | / / \ ヽ / / ‐、、 殺 伐 と し た ス レ に 鳥 取 県 が ! ! _,,−'' `−、、 __/\ _,,−'' `−、、 _| `〜┐ _,,−'' _ノ ∫ _,.〜’ / ───────‐ ,「~ ノ ───────‐ ,/ ` ̄7 | 島 根 県 / _,,−' ~`⌒^7 / `−、、 _,,−'' 丿 \, `−、、 ,'´\ / _7 /`⌒ーへ_,._⊃ /`i ! \ _,,-┐ \ _,.,ノ r‐-、、 / ! ゙、 `ー--<´ / L. ,〜’ ゙、 >−一'′ ,' y' U `ヽ/ / ヽ ヽ '´ U イ ____ / __ | \____\ ___/__ / ̄ ____|____ \ \____\ //ヽ /___ /|\ \ \____\ / / ヽ / /__ / | \ \_______ / / / / / / | \ | \ / / / / _/ __/ | \__ | \  ̄―_
>198 idがdoubleかなんかになってるんだよ。
203 :
仕様書無しさん :2012/04/11(水) 21:01:07.00
俺がおかしいんだろうけど privateかつ仮想関数でもない関数がstatic関数じゃ無かったとき。 てか、できるだけクラス内部で呼ぶオブジェクト自身の関数は、 static関数であって欲しい。 まず、インターフェースとして外に見せてる関数じゃないんだから、 static関数で十分だし、コード追うときメンバー変数弄ってる関数は 見た目がグローバル変数中で使ってる関数と同じなんで読みづらい。
this使えよとしか
this->〜();ってしてても他のヤツ保守するときサボるし this省いてもコンパイルエラーにならんし
Objective-Cとかjavascriptだと selfやthis強制するから便利だよな
>>203 うん、君がおかしい。
でもそれがイラッつとするなら
そりゃ感情論だから仕方ない。
>>204 thisもどうかと思うわ。5個メンバー変数あっても、
実際一つのprivate関数が必要とするのは2〜3って事が多いし。
だったら直接その変数を引数渡しした方がましじゃん。
>>208 メンバー変数をわざわざ引数で渡す必要性がわからん。
>>209 グローバル変数と同じ理由
// ここだけ見ていつループが終了するか解るか?
for( point = 0; 100 > point; ++point ) Function();
極端にもほどがあるな
数年前のコード追うときとか楽なんだよ
>>210 の例でいうFunctionで実際に値が
変更されるかどうか、Functionの中身
見ないで判断することができるからね。
グローバル変数は目の敵にするくせに メンバ変数にしただけで安心しちゃってる人は グローバル変数の何が悪いのかもう一度考え直したほうがいいね。
>
>>210 の例でいうFunctionで実際に値が
> 変更されるかどうか、Functionの中身
> 見ないで判断することができるからね。
意味がわからない。
>>213 普通は必要があるからメンバ変数として保持するわけで。
メンバ変数として保持する必要がない変数までメンバ変数として保持してる
コードは、そもそもそれ自体が変だとは思わないか?
>>214 pointがフィールドだった場合Functionメソッドが何もしなければ100回でループを抜ける
もしFunctionがpointに対し何かしていればループの回数はFunctionの実装を確認するまで不明となる
>>215 問題点が違うよ。
無駄じゃないメンバーでも問題は変わらないんだから。
>>215 メンバ変数は状態を保持するための苦肉の策でしょ
本当は禁止したほうがいいくらいだよ
なんか、static爺の匂いがしてきたぞ。
俺とプログラム議論で戦おうて言うなら徹底的にしてやるぞ
インターフェースとしてクラスを使うのか、thisを省略するためにクラスを使うのかじゃ全然違うしな
>>218 全部の変数をmain関数から引き渡せば状態を保持するメンバ変数なんていらない
っていう主張だったっけ?
223 :
222 :2012/04/11(水) 22:51:28.59
あぁ、ちょっと違った。 main関数じゃなくて、上位の関数だったかな。
>>223 インターフェースになる関数の中で呼ぶ自分のメンバーには
引数でメンバー変数を渡せって話。
なぜグローバル変数が嫌われるかといえば 変数のスコープがブロックを超越するために 生成消滅のタイミングを把握できないからだ。 メンバ変数にしたところで スコープがクラス内に限定されるだけで メソッドというブロックを超越する問題は解決されていない。
>>225 消滅というか変更全般だろ
下手すりゃ無限ループも起こすし
まあオブジェクト指向も所詮道具なんだから 良い所悪い所判って使えばいいんだけどね
オブジェクト指向は関係なくね もっと構造化レベルの原始的な話でしょ
>>228 その通り。
この話題に違和感を感じるならオブジェクト指向以前に
構造化を判ってない証拠。
>>224 そもそもそんな関数をメンバ関数にしてる設計がおかしいんじゃない?
インスタンスに関係ない関数なら、クラスに入れないのが正しいのでは?
>>230 インスタンスに関係ないわけじゃなくて
お行儀良くしましょうってことだよ
>>230 あるクラス内でしか使わない関数なら
不要になったとき捨てやすいように
クラススコープに隠しておきたい
>>231 別クラスにするとかあるでしょ。
>>232 基本的にはオブジェクト指向である限り、インスタンスと相互作用が
ないものはクラス内に入れないほうがいい。
まぁコーディング上の都合でちょっとしたことをさせる
(インスタンスと関係ない)小さなメソッドを入れることはあるけど。
>>234 別クラスで公開してしまったら他から使われる可能性があるからな
>>234 メンバ変数を直接いじるよりは、引数と戻り値を通じてやり取りしたほうが良い。
プライベートであっても、副作用があるより無いほうが良い。
>>236 副作用を起こすことを目的とした関数の場合には、
結局メンバ変数を参照渡しするか何かして副作用をおこすんだろ?
そんなに変わるとは思えないな。
戻り値で受け取ったほうがはっきりするでしょ this.value = privateMethod( 100 );
操作するのが一つでよければね。
>>240 戻り値が一つしか返せないから不便というのであれば
タプルを持つ言語を使えば良い
before: for( point = 0; 100 > point; ++point ) Function(); after: for( point = 0; 100 > point; ++point ) point = Function( point ); 多少明示的にするだけでかなり違うね。
>>243 ループ中にループ変数に代入する(かつ下位関数で書き変える?)
っていうコーディングスタイルがそもそもありえない。
別にこんなものは絶対こうしなくちゃていうものじゃなくて 方便で使い分ければ良いんだけど 意識してるかどうかは別の話だからな
>>245 forの例は極端だろうけどwhileとか
ループ中で副作用が発生すんのはよくあるよ
whileはループじゃねーよ
whileがループじゃなかったら何なんだw
>>245 「ループ変数」てのがすでにおかしい。
それはただの変数だ。
>>240 戻り値がオブジェクト一個で済まないなら
それこそ別クラスにすりゃよくね
クラス内部でprivateメソッドにするような
内容じゃないでしょ
おまいらスタイルの話じゃないですよ、と。
問題の本質はあるクラスメソッドにおいて メンバ変数にアクセスしてるのかグローバル変数にアクセスしてるのか ぱっと見区別が付かないということだったはず。 thisを強制すれば済む話だけど、 社内の統制がクソでコーディングスタイルが統一できないのであれば 何を提案しようが無駄な気もする。
>>250 ただの変数pointで
> for( point = 0; 100 > point; ++point ) point = Function( point );
こんなコード書いてきたら何も言わずに書き直すわ。
グローバル変数と問題が同じというだけで もとからメンバー変数とグローバル変数が紛らわしいという話じゃないよ
>>253 問題の本質は
引数と戻り値を使わず、メンバ変数を直接いじるプログラムを書くことによって
思わぬ副作用に見舞われることがあるってことだよ。
>>254 わざわざ問題を単純化して話をしやすくしているのに
話をすり替えるな
>>254 それを書き直すのは構わんが
こういうケースだって問題はかわらんのよ
while( 100 > point )
{
FunctionA();
FunctionB();
FunctionC();
}
while( 100 > point )
{
FunctionA();
point = FunctionB( point );
FunctionC();
}
>>253 それこそスレ的には
「アプリケーションハンガリアン使え」
で済む話じゃね?
ハンガリアンは、型を表すプリフィックスであって スコープを表すプリフィックスはハンガリアンではありません。 プリフィックスが付けばなんでもハンガリアンだと思うバカが多くて困る。 ぶっちゃけ、::や->や.を記号ではなく文字として捉えれば、 nantoka::fooとかの nantoka::もプリフィックスだってーの。
>>259 システムハンガリアンじゃね?
アプリケーションハンガリアンってと
pxSize ptSize emSizeみたいな単位とか
変数の型(とスコープ)じゃなく中身の情報含ませるものだから
話を戻そう。 プリフィクスを付けたところで ある関数で、メンバー変数やグローバル変数が 書き換えられている事は解らないので意味がない。
全部const関数にしましょってか
>>258 どうも、例にあげてるコード自体が何となく臭いんだけど。。
メンバ変数pointが100未満の場合ループするよっていう
仕様なら(=pointがそれだけ重要な意味を持ってるなら)、
前者でいいと思う。
>>265 問題は直すとき。今後者のループを見ればpointを
書き換えてる関数は一発で解るけど
前者だと3個とも疑わしい
実際の具体的な名前の関数ならすぐ解ると思うかもしれないけど
具体的な名前の関数でも分かりづらい事が多い
while( 100 > point ) { this.proc.FunctionA(&point); this.proc.FunctionB(&point); this.proc.FunctionC(&point); } もうこれでいいよ。
>>269 渡さなくても良い関数には無理して渡さなくても良いんだよ
>>267 別スレッドでpointを書き換える関数(publicかもしれない)が
呼ばれたときのこととか考えるとね。
意味としては、
100 > pointが成り立っている間、
FunctionA(), FunctionB(), FunctionC()を実行しつづけるよ
っていうのが重要だとおもうんで。
>>271 そんな例外(プログラム的な意味ではなく)を考えたところで意味が無いでしょ。
例外は例外らしく処理を切り分けるべき。
ここでは変数pointがどの関数によって影響を受けるか
明示されていることが大事なんだ。
>>273 後者の書き方でも、結局は明示されてないということ。
むしろ、
point = FunctionB( point );
だけをチェックすればいいんだと間違えるかもしれない。
>>271 どうしても無理っていうなら別だけど
できる状況なら分かりやすくしとけばいいでしょ
>>258 の流れから
while( 100 > point )
{
this.proc.FunctionA();
this.proc.FunctionB(&point);
this.proc.FunctionC();
}
これで文句あるまい。
>>274 だけをチェックすればいいようにするんだよ。
オブジェクト指向はインターフェースの外の話しだし パラダイムがどうのとかどうでもいいよ 飽くまで構造化と実用的な保守スタイルの話しだし
>>278 同じような話だけど、バカが水差して終わってるだけじゃん
何か随分と伸びてると思ったら、ゆうべはおたのしみでしたね。 メンバ変数の書き換えについては、小規模なら良い様な気もするけども、 ループカウンタを途中でいじられるのはイラッつとするな。 This必須とか制限を増やしてコーディングの自由度を下げて 誰が書いても似たコードになるようにするのが今の言語の流れかね。
>>243 実際に動かしてから死ねよって思うかソース見た瞬間に死ねよって思うかぐらいの違いしかないが
この違いのおかげでおおごとにならずに済むこともまあまあある
for( point = 0; 100 > point; ++point ) Function(); // Function()内でpointを更新
だからコメントは信用するなと……ぐふっ
なんかすげえ伸びててワロタ
ここまで読み流した ループカウンタをメンバ変数にするな
>>281 > This必須とか制限を増やしてコーディングの自由度を下げて
逆に言えばさ、thisを書かなくても良くなったら
自由度があがるってことになると思うんだけどさ、
「thisを書かなくてよくなった、俺は自由だ!」って思う奴いるの?
つまりね、俺が言いたいのはthis必須と自由度とは全く関係ないよってこと。
× 「コーディングの自由度を下げて 」
○ 「コーディングの面倒くささを下げて」
君が本当に言いたいことはこうでしょ?
で、問題はthis省略で本当に面倒くささが下がったかどうか。
確かに書くときの面倒さはなくなったが、逆に読むときは
正確な意図がすぐには分からず面倒さは増えることになる。
これは、どっちがいいかって話。トレードオフの話でしかない。
なぜ俺が最初に「自由度とは無関係」と言ったのかというと、自由度は
上がるか下がるかしか無い。そうするとトレードオフの話ではないように見えてしまう。
本当は、this必須かどうかってのは、トレードオフの問題なのに、
this省略できたほうが優れてるような印象になってる。
解釈の自由度が下がるやん
解釈の自由度ってなに? まさか、書いた本人が どう解釈されてもいいように書いた! なんて言うわけないしw
> 誰が書いても似たコードになるようにするのが今の言語の流れかね。 これもよくわからんね。 ですます調でかけ!と言われても 似たような小説にはならんだろ? オリジナリティがある小説を書く場合、 そのストーリーでオリジナリティを出すのであって そんな語尾をどうするか程度で、似てる似てないなんて 判断しないだろ。
ごめん、眠くて
>>205-206 にいい加減な事書いた。
thisじゃなくてメンバー変数を明示的に引数で渡せば十分だった。
別にthis->
途中で送信してしまった 別にthis->〜を強制する意味はなかった。 せめてthisでも明示的に渡せば書き換えが 分り易くなると思ったが無駄だった。
>>291-293 いや違うって。
引数で渡そうが渡すまいが、
同じクラス内のメソッドだとメンバ変数に自由にアクセスできてしまうから
まずは他所へ追いやるのが先だろ。
その追いやる先というのはthis.〜から始まるサブクラスしかあり得ない。
それ以外から始まるクラスはぱっと見でスコープわからんだろ。
>>294 既にさんざん出てるけどstatic関数なら制限できるよ
>>295 でもそれがstaticかどうかってぱっと見わからないよね。
staticじゃなくてもコンパイル通るよね。
>>296 通るだけならグローバル変数だってコンパイル通るじゃん
じゃなくて、ルールでそう規制するんでしょ
レビューとかでさ
>>296 簡単な文を一行書くだけで簡単にグローバル変数は使える。
でも現実には、みんな引数渡しを使う。
組織内でダメという風潮を作れるかどうかよ。
>>282 バグに限った話じゃないけどな
改修しやすさも大きく変わる
5個関数がならんでて、5個の関数の中身調べなきゃ
改修する変数の影響が解からん場合と、
2個関数調べれば変数の動作を完全に把握できる場合とじゃ
作業に掛ける時間が大きく異なる
実装の安易さと、保守と、バグ発生の回避を同時に満たすコーディングか。
スマポにするとコンストラクタでthis使えないからな どんどんソースが汚くなる
1段メンバー呼び出してるだけでも面倒だが、 メンバー呼び出し階層が2段でその先で 書き換えられてるとか相当辛いよな そもそも階層増えるなら自分のクラスじゃなく 他のクラスメンバー呼べって話だろうけど
if(null == hoge) C言語屋の年寄りってこう書くよね 最高にウザいんだけど
C言語ならなおさら書かないんじゃないか? 文字列を==で比較する感覚に似ている
>>303 一生懸命アラ探ししてやっと見つけたのがそんなどうでもいいことなのなら
その先輩は結構デキる奴だな
もしくはお前がダメすぎて他のアラが見えないか
1年目の新参ですがこのスレは勉強になります
1年目の新参だからこのスレは勉強になります
>>303 定数を先に書くのはC初心者の象徴だろう。
「定数を先に書いておくと、 比較と代入を間違えて記述したときエラーになるので 間違いを見つけ易い」 という理由でそういう記述の仕方をする人は散見するけども、 それは 「私は比較と代入を間違える可能性があります」 と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという ただの経験則。
==は「〜が一致する」的な読み方だから「1とaが一致」より「aと1が一致」がaの中身を調べてるって文章になり読みやすい…気がするから変数先だな完全に個人的な理由だが
>>311 0 > ExampleFunction( ・・・, ・・・, ・・・, ・・・, ・・・ )
定数左に書けば条件見やすいけど
ExampleFunction( ・・・, ・・・, ・・・, ・・・, ・・・ ) < 0
定数右に書くと条件が右端に行くんで見づらい
>>313 変数使えばいいやん。
条件式に直接使うぐらいなら、ほとんどの場合はExampleFunctionは意味のある名前の「はず」だから
文脈そのまま読める方が読みやすいと思うが・・・まぁ慣れれば慣れるんだろうな。
伸びすぎててイラッつとしたコーディングスレ
>>311 > 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという
== とタイプしようとして = とタイプしてしまう可能性は誰にでもある
「俺は間違えるかもしれない」と言ってる奴は、「俺は絶対間違えない」って奴よりも信用できる
たとえコンパイルオプションやツールでチェックできるとしても、 (0 == foo) って書くのは悪いことじゃない
そもそも、(0 == foo) が理解し辛いって奴は、数学的センスに欠けている
地図を読むときに、常に進行方向が上になるように地図をぐるぐる回す奴に通じるものがある
そんな奴とも一緒に仕事をしなければならない以上、 規約で (foo == 0) って記法に統一するってのはあるかもしれないが、
そんな奴はお荷物だということを自覚すべき
>>317 > 「俺は間違えるかもしれない」と言ってる奴は、「俺は絶対間違えない」って奴よりも信用できる
俺なら、コンパイラがチェックしてくれるのに、「俺は間違えるかもしれない」から(0 == foo)とか書く奴は、
間抜けか頭堅い奴と判断する。
> たとえコンパイルオプションやツールでチェックできるとしても、 (0 == foo) って書くのは悪いことじゃない
悪いことだよ。
> そもそも、(0 == foo) が理解し辛いって奴は、数学的センスに欠けている
数学的センスなんか関係無いよ。言語の話をしてるんだよ。
「if foo is zero」と「if zero is foo」を同じように同じ速度で紛れがなく誰でも判断できるかどうかの話。
> そんな奴はお荷物だということを自覚すべき
お前がお荷物だよ、全く。
マジックナンバーを直書きすることはほとんどないし 定数なのにconstを忘れる可能性もあるな
0 == fooと書いたとしても、問題の解決になっていないからねぇ。 手癖みたいなもんで、書くのは勝手だとおもうが 「0 == fooのほうがいい」と主張する奴の話は当てにしない。
たとえ話をする奴は説明が下手
誰も 0 == foo の方が良いって主張してないと思うが foo == 0 の方が良いって主張してる奴はいるけど
>>311 ちょっと頭悪すぎ
hoge == null の方がいい理由は、null == hoge と書いたときに得られるわずかな利点よりも、
直感的に理解しづらいという欠点の方が大きいから
もちろん if (hoge = null) みたいなミスを検出できる開発環境下が前提だが
if (0 == hoge)の件は、ある程度の分量の文章を一度読んだだけでは理解できないIQの層の奴らの 琴線に触れる何かをもってるんだろうな
>>326 俺は 0 == x と書く人に対して、用心深いとは思っても
> 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという
みたいな感想は抱かないがね
え? 「私は比較と代入を間違える可能性があります」から、用心深く0 == x と書く人が糞だとみんな言ってんじゃないの?
>>328 俺なら、そんなくだらん用心深さなんか発揮しないで、読みやすいコード書けアホと思うな。
雨が降る可能性が0%でないからと言って、毎日レインコートと長靴で生活する馬鹿
>>331 で、お前は 0 == x と書く人の他の部分のコードが信用ならないと思うのか?
俺は他の部分にも同様の用心深さを期待できてむしろ信用できると思うがね
>>333 全く信用できない。
そいつは、
・コンパイラが教えてくれるのを知らない無知
・それは知ってるが、「念のため」とかいう訳のわからない理由でスタイルを崩さない馬鹿
のどちらかだから。
>>332 > 雨が降る可能性が0%でないからと言って、毎日レインコートと長靴で生活する馬鹿
ソフトウェア開発においては、それが普通
if (0 == hoge)と書く奴を「用心深い奴」と評価する奴に初めて会ったわ
if (0 == x)と書くことが良いことだと思うような間抜けのコードが信頼できるわけないだろ
条件式は左辺が評価対象じゃないとな 左読みで重要な情報を先に目に入るようにしないと、思考の効率が格段に悪くなる
returnやsizeofで不要な括弧を「その方がわかりやすいから」と取ろうとしない奴とか、 if (hoge == true)を「その方がわかりやすいから」という奴と同じ臭いがする
GNUのコーディングスタイルほどいらつくものは無い
またわけのわからん奴が現れた
括弧や演算子の前後に一切スペースを入れず、空行も一切入れないスタイルにいらつく
>>317 >== とタイプしようとして = とタイプしてしまう可能性は誰にでもある
自分のを発見して「ホントにあるんだ・・・」と、変な感動を覚えた記憶がある
不毛な議論
3 x 4 と 4 x 3 は意味が違うんだ、という小学校の話を思い出した。
>>339 sizeofは括弧付けちゃうなあ・・・
>>346 3+3+3+3と4+4+4は確かに違うといえば違う
== を妄想オーバーライドしすぎ
regist
>>315 やだよ一時変数で済むもんワザワザ宣言するなんて
あと、具体的な名前書いても条件が画面右寄りになることで到底分かりやすくなったとも思えん
while( 0 < GetMessage( &message, 0, 0, 0 ) ){}
hoge == 0 でも 0 == hoge でも何とかなるのだが、 hoge == 0 で統一されたソースに 0 == hoge で 追加修正された時はイラッつとした
まだそのネタが続いてるのか
0 == hoge か hoge == 0 かなんてどうでもいい
>>311 の頭おかしいのは
> 「私は比較と代入を間違える可能性があります」
> と宣言してるようなもんで、他の部分もちょっと信用ならないよねーという
の部分
もっと言うと、
>>311 は一切typoしない、typoする奴は信用ならねーって言ってること
両者を納得させるために hoge == A は (hoge - A) == 0 にしようず
>>339 ちなみに、「sizeof 識別子」と「sizeof(型)」は別物ですよ?
混在してると解り難いってゆーなら括弧必須のルールでもいいけど。
>>352 while (GetMessage(&message, 0, 0, 0) > 0) { }
ふぅ。
100%ミスしない人間が存在しているという前提がもう頭おかしいだろ。 0==hogeが見難いのは単なる慣れ。 オレの気に入る書き方以外はクソとかどんだけ自己中なのか。
そうかいちゃダメな理由になってないだろうww
そうだね。
0==hogeって書く奴は定数がdefineされててもFUGA==hugeってやるんだよな。キモイ… つか、==じゃない比較演算子もそうすんの?HOME>=hageとか。==だけ?
>>362 不等号に関しては、複数並ぶときに向きを揃えるっていう
数学的なお約束があるんで、それに合わせることも多いんじゃね。
定数1 <= 変数A && 変数A <= 定数2
みたいに。
。・゚・(Д゚(0==(´∀` ) これをグループ内で提案したらものすごく気持ち悪がられた 本質的に「わざと違和感を抱かせてミスを防ぐ」トリックだから やむをえないかもしれない
それは慣れていない所だから有効なんだろう。 違和感が無くなるほど使用されている現場ならミス防止には役に立たない。 削除の時の確認ダイアログと同じ話。
>365 >本質的に「わざと違和感を抱かせてミスを防ぐ」トリックだから >やむをえないかもしれない そんな理由付けが許されるならば、 int func0005() とかも許されるな。 「これも、わざと違和感をもたらせてミスを防ぐトリックですよ」とか 「関数名がもたらす思い込みを排することでミスを防いでいます」とか。
>>367 違和感を抱かせて「あぁ。そういうことね」と思い出させる。
0==hogeを見れば、「hogeに代入しないように」ということを思い出す。
さて、int func0005()
違和感は感じるが、肝心の「思い出す」ことはなんだ?
hogeには代入してもいいんじゃないの? 代入したくないんだったらconstでも付けとけばいい話では。 (言語によってはできないのもあるのかな)
if( 0 == hoge ) はほとんどお目にかかった事無いから気にして無い。 if( hoge = 0 ) はWarning出てるのに放置されてたのをこの前見かけた。 Warning出てるのにコミットする奴にイラッつとする。
>>368 「動作を知りたければ仕様書にあたれ」とか?
だいたいそんな言語を使うほうが悪い VB使えよ
だめだ、このスレは汚いソースコード位イライラする
イライラじゃなくイラッつとしなくちゃダメだろ
☆ × ' . × x ` . x ヽ . ☆ X ,. -. ‐'´ ̄``丶、 ノ} X /} /: : : : : : : : : ーヘ × / //: : : :l: .:. .} | . : : : : } . . ゜ _ノ_,ム′: : : |:::::::/! l.::. : ! /: :\ , ☆ _/ /,. -‐〉 : : :_ !:;イ¬.|:i::: |i.|. :.i::: : : ヽ ; ☆ . . ,. '´!{ ゝ-‐''^¨二.ノ:〔__− V!::!LTV{::: : : :.', ×x . ぃ .イ::. : : |⌒` }:リ'示Y1:: : : i } x × . '´ ,. 介iー-、 {:::::::::. : : ! ^' ヒ'リ ',.|:::. :.. :.!リ X X / /ヽ' L! ヽ. Y::::i::::. .::. |r:ゥ- 、' `^ /:::l::::.::::.x:リ′ ; ☆ イラッ☆ x / / /⌒ヽ 込Jヽ:ト:{>、:ィ八_ ,.‐く イ:ィ:::!x::X::/ ゛ i'´ /-r‘ー、 ヘ-┴‐〉 `'i¬ ヘ.__{:::::::}.彳〔__レ1::ル'゜ ゜ . ー 、 --−'´ コ:..:.}: \ 丶 .l | -、匸⌒´:_;-、ノ }_ ´ ゜ ×. `ヽ、 └;.:. .. } 〉 ヽ.| 〈__:,.イv/´〕、冫`i x ☆ ` ¬ゥ´:..:....:..:..:..: ,ノ、 \ { ! {.{j_/,ィう′ ! x ' Y:..:..:..X:..:..:.∠.._ ヽ.} |. } `マ^V | X , ゛ヽ:..:..:..:../ ,.⊥_ /小\¬-{ ∨ヘ._,. -‐¬、 ☆ ` ー′ j:..:..:..:Y´:´/ハ卜':..! :ヽ ∧::ヘ .:..:... } /:..:..:..:..j/:..:.`:..:´:..:..i :..:ト-_ノ マ'’:..:..:..:..ヘ
おまいらなんでC前提なん
他の言語と違って、標準的なコーディングスタイルってものがないから。
そんな言語早く捨ててしまえ
比較演算に順序が決まってる言語なんてそもそも有っただろうか
>>368 >違和感は感じるが、肝心の「思い出す」ことはなんだ?
一言では言い表せない、その関数の振る舞い全て。
>>371 その通り。
>>381 そう思うならプログラムなんて適当に書けば?
ここにいる必要ないし、この板にいる必要もない。
プログラマ辞めちまえよ。
>>381 > 一言では言い表せない
じゃあダメだろw
一言で言い表せることが重要なんだから。
イラッつとした相手が上司だったり先輩だったりすると何て言えばいいかわからない
>>385 イラッとしたら何か言わなくてはいけないという
法律でもあるのか?
普通イラッてしたら イラって言うだろ? 昨日も満員電車で イラって何回も言ったわ
昔ある中華料理のチェーン店でバイトしてたせいか 内装の同じ店に行くと新しい客が来たとき「イラッ」って言ってしまう
>>388 うわーキモいw
そういう中二病のやついたなー学生の時w
392 :
仕様書無しさん :2012/04/14(土) 18:26:10.67
>>386 イラッつとしたら人に当たり散らすタイプなんだろう。
>>385 言い返す権利はないのよ?(´・ω・`)
>>381 は敢えて仕様書を読ませる為に
プログラムを読みにくくすると言ってるんだぞ。
まるでコボラーだな。
ソース暗号化しといて、readmeに「複合鍵は仕様書の中に隠されているよ!頑張ってね☆ミ」で解決
while (GetMessage(&message, 0, 0, 0) > 0) { } が while( 0 < GetMessage( &message, 0, 0, 0 ) ){} になるだけで仕様書読まなきゃならんのか
>>395 もう関数名を「仕様書嫁123」とかにすればいいのに。
コンパイルしてしまえばコーディングスタイルなんて気にしなくてもよくなるだろ
そゆこという奴よくいるよな
コンパイルした後のコードを読んで修正してメンテナンスし続けるのならそうかもなw
>>395 有象無象のソルジャーというか土方というか、そういうのを束ねて開発する
方法論としてはアリだと思うがな。やらされる立場になったら負けということで。
やる立場になっても負けだろw
男ならコードで語れや
if (VeryLongoLongFunctionName(var1,var2,var3,var4) > 3) みたいにクソ長い名称と比較するときは、定数を左辺に置いたほうが見やすい。
int value = VeryLongoLongFunctionName(var1,var2,var3,var4); if (value > 3) こうすればいいだけ
そもそも関数名すら読まないのかと疑いたくなる
引数が多くて横に長くなる時にどう書いたら見やすいかでイラッつとする。 func( var1, var2, var3 ); funcがやたら長い名前だと何か変な感じになるしで困る。
func( val1, val2, val3, val4, val5, val6, val7, val8) { } って書けばいいだけ
Bazooka bazooka = new Bazooka("89mm"); bazooka.setDigree(60f); bazooka.setRoll(25f); bazooka.setPitch(0f); bazooka.setExpression(0.5f); bazooka.setPos(0f, 0f, -0.5f); bazooka.setColor(1.0f, 1.0f, 1.0f, 1.0f); bazooka.isMorningBazooka(false); bazooka.setTarget("Kycilia Zabi"); Result result = bazooka.shot();
>>411 デバッガ使わない (使えない) 人特有の症状だね>一時変数を嫌う
おまえがいってるのは一時変数じゃないだろ それはともかく、whileやifの条件ならどっちの分岐に進んだか、 ループを抜けたか抜けないかで判断できる。 それによほどしょぼいデバッガーじゃなけりゃ戻り値確認できるし。
このスレのほとんどはGoにすれば解決しそうだな。
メソッドチェインにするか
>>414 うん、それで?
続き言わないとお前が恥をかくよ。
構造体にいれたら 関数のインターフェース変わるじゃんw
カリー化しようよ
じゃあ俺チキンカリー
毎回引数が変わるのにカリー化するのか? カリー化がわからない人へ。 class Foo { Foo(x, y, z); } ↓Foo(コンストラクタ)をカリー化すると class Foo { Foo(x, y) { Foo(x, y, 1) } Foo(x, y, z); } こうなります。これがカリー化ですw
おおー、よく使うけど呼び名知らなかったわ
デフォルト引数でいいやん
>>422 違うだろ。
これだよ。
void foo(x, y, z)
↓ カリー化
#define foo1(x, y) foo(x, y, 1)
関数fooの引数のいくつかを埋めた、
”新しい関数を作る”こと
つかいま出てるのってカリー化モドキだよな F(1, 2, 3, 4, 5); F(1)(2)(3)(4, 5); 本来のカリー化なら呼び出し方を変えられるだけ 新しい関数を定義する必要はない 1つ関数を定義すれば自動で2通りの書き方ができる
F(1, 2, 3, 4, 5); F(1)(2)(3)(4, 5); 単に数学の概念上この2つが別である事がおかしいって話だよな プログラム的にはこれが出来るとアダプター作る手間が省けて格段に楽になるんだが
実際にはアダプタ作るとか ラッパー関数作れば終わりなんだけどな。
引数の数を変えるだけの場合。
引数の多い関数が嫌だ。 引数が多いだけならともかく、多機能にして省略可能な引数を作るクズを絞め殺したい。
「コーディングスタイル」以外の話はスレ違いですよ莫迦共。
ぬるほど
int GetSize()という関数を使うのに if (!GetSize()) { … }
>>435 Javaで、java.beansを使うわけでもなく、
それどころかCかC++なのにいちいちGet付けてんのがイラッとする。
Qtやらboostみたいにobject.Size();か、〜Size( object );でいいだろうに。
>>437 には同意
だが、
if (! foo.size()) {
// fooが空でないときの処理
}
の書き方は全く問題なし
え?
>>438 コメントかコードのどちらかが間違ってるんじゃね?
>>439 そのsize()はboolean型で、オブジェクトが空のときにtrueを返すという仕様という罠。
>>435 とりあえず、Gが大文字なのがイラッつとする
それは言語によって推奨されとる命名規則が違うんでなんとも
Type.newと書ける言語でもないのに 関数名のキャメルケースがコンストラクターの キャメルケースと違うのがイラッとする const Example &object = Type(); const Example &object = Function();
どうでもいいが、 for (i = 0; i < point; i++) {...} は許せるが、 for (i = 0; point > i; i++) {...} はイラッとくる。 あと、K&Rスタイルじゃないコーディングもイラッと来るおっさんですが。
ラムダ式とプロパティの存在
void illatz(int n, int step) { printf("%d, ", n); if (n < 2) { printf("%d step\n", step); return; } ++step; n = n%2 ? 3*n+1 : n/2; illatz(n, step); }
見やすく書く、 呼び出し構造を追いかけやすくする インデントを揃える こういう書き方ができない奴は プログラマに向いていない。 美意識が無いやつは消えろ。
hoge禁止 fooは許せるがhogeはイラッつとする俺だが、表立ってhogeを禁じられるのはそれはそれでイラッつとする
fooとかbarは西洋かぶれっぽくて嫌味が。
は、は、は、はげちゃうわ!
俺は薄いだけだからセーフだな
ホリエモン 元ニート でググれ やばすぎwwwwwwwwwwwwwwwwwwwwwwwwww
a.set(b.getHoge()) こういう戻り値を直接引数に渡しているコード デバッグしずらいんだよね
どうすべきだと思う? いったん器に入れてから食う?
デバッガを変える
うーん、読みやすいと思うんだけどねー
デバッガ使わないやつはまったく使わないからな。 オレなら一時変数に1度いれるようにする。
場合によるが大抵は一時変数にいれるな
俺も一時変数に入れる
>>456 戻り値を表示できるデバッガを使うのが一番楽
int getHoge(){ return Fuga; } ってのがヘッダに書いてあってもデバッグし辛い時があるけど、諦めてる。
それはインライン展開があるからしょうがない。 でも行を分けてないとデバッグしにくいよね。使わないやつには判らんだろうが。
printfデバッグだって変数につっこまなきゃできないぞ
一時変数にいれる一手間を加えると美味しいソースが出来るの? 同じ味が出せるなら手抜きした方がいいと思うんだけど。
> 一時変数にいれる一手間を加えると美味しいソースが出来るの? 簡単に味見ができる。
そんなに手間かなあ?
そんなに手間っていうより、無駄な手間って感じ。 関数名が正しければ一時変数にいれない方が文章として読みやすいし。 あと、処理系によつまては処理が早そうだし。 と書いたけど、俺も一時変数にいれた方がその後のコードが読みやすくなる場合は一時変数にいれてるな。 入れる入れないの判断基準が「デバッグ出力しやすいか」ってのと「読みやすいか」ってのとの違いか。
副作用を消せば返ってくる値が同じなので変数に入れる必要すらなくて ただ関数の結果をピークすればいい。
>>464 コンパイラにまかせろよ
ライブラリとして外部に譲渡すること考えたらキモチ悪いだろ
一時変数に入れるのはいいが、temp だの value だの ret なんて名前だったり、const つけてなかったりしてるとイラッつとする。
>>472 そんな奴が一時変数の効能考えて使ってるとは思えないわw
中途半端な変数使うぐらいなら観察用関数使った方がましだわ 名前考えるのマンドクセ template<class type> type &Check( type &value ) { return value; } template<class type> const type &Check( const type &value ) { return value; } FunctionB( Check( FunctionA() ) );
>>474 そうするくらいならFunctionAの結果を直接見るよね
今どき戻り値が見れないデバッガとか何を使ってるの? 16bit環境?
パートナー
if(!strcmp(foo,bar)){
strcmpが真偽値を結果とするような関数じゃないから不自然だね。仕方ないね。
#define 麿 malloc #define おじゃる free
switch( mode ){ case eHoge: mode++; break; case eHoge+1: mode++; break; case eHoge+2: mode = eFuga; break; case eFuga: mode++; break; case eFuga+1: break; }
>>480 真偽値などという型がないCが不自然なのであって
Cとしてはあれで正しい、といえなくもない。
strequal関数を作ればいいだけの話 どちらが大きいか比較して 真だった場合。 意味がわからないだろ。 if(strcmp(a,b)) とはそのように読む。 どうしてもstrcmpを使いたいなら==0とするのが正解。 0をSTRMATCHと定義し、==STRMATCHとするのがベター
>>484 不自然か?真偽値なんて、真偽値がオブジェクトだったり、
オーバーロードが必要と言う理由じゃなければ独立した型である必要ないだろ
単なる名前付けした定数で充分なぐらいじゃん
真偽値という別の名前を与えている以上 別のものであると我々人間が解釈しているのですよ。 コンピュータに合わせない。 人間に合わせる。
未だ真偽値という分け方自体が最善かすら揉めてるのにw
真偽値というか、ifの文脈で明らかにおかしいだろ
外国人にはこのように見えています もし(文字列比較(a,b)の否定) なら
コードかきなれてるやつで、自然言語に近づけたいと 思ってるヤツなんてほとんど居ないだろ 慣れて気になるのは合理的か、回りくどくないか(考える手間が増えないか) ぐらいだろ
じゃあなんで関数名、変数名、キーワードは 英語なんですか? 英語=自然言語ですよ。
if(!strcmp(foo,bar)){ これで、実効時間が一クロックでも違うのなら意味があると思うけど、 == 0 と変わらないのであれば、採用するメリットがない。
>>493 でも、名前は英語ですよね。
その名前から連想できるものは何でしょうか?
そこは変わらなはずですが。
むしろ、自然言語から連想できるように
キーワードを選んでいるわけだけど。
例えばifという名前が、繰り返すという意味だったりしたら わけがわからないことになる。 そんな事するぐらいなら、ifもforもやめて、 A01、B02 とかいうキーワードの方がまだまし。 でもそうしないで、ifという単語を割り当てているというのは、 ifという単語の本来の意味が重要だってこと。
>>493 Javaなどでは、オブジェクト.動詞目的語
という命名規則が普通ですね。
>>496 日本語でも、イスラム語でもフランス語でもいいぞ。
>>496 構文に自然言語を求めてないと言ってるんだが。
大体、Unixのソースコードとか英語名称に準拠してるか?
アルファベット使ってるだけで略語だらけじゃねぇか。
アルファベット使ってりゃ自然言語だというなら、そりゃ全部自然言語だろうよ。
馬鹿って絶対に自分の非を認めないよね 故に馬鹿なのか
英語で書いてある部分なんて機能が解るシンボルとしてしか見ないな 言語自体が英語らしいかどうかなんてどうでもいいや COBOL見たいなの見せられたら吐き気がするし
>>500 > 構文に自然言語を求めてないと言ってるんだが。
あなたわかってるじゃないですかw
自然言語を求めてないのは構文でしょう?
単語には自然言語を求めてるんですよ。
略語も自然言語。自然言語の略語。
>>492 は、「アルファベット」を見ると「英語」と言ってしまう
ローマ字未修得の小学生、あるいは戦中派に違いない。
>>505 え? 普通言語って英語を元にしてるでしょw
俺の大得意な言語は 日本語を元にしてますよ。 なんてなーwwww
>>506 UKとUSAの人間が読めなくても英語なのか?
>508 if が読めないのですか?
string や compare が読めないのですか?
TSUNAMI, HENTAIは英語だけど Heigh Visionは日本語という不思議。
英語が分かる人 「strcmpって何?」 「string compare の略だよ」 「なるほど!」
>>509 "if"だけじゃなぁ。interfaceの略かもしれんし、
イタリア語かもしれんし、フランス語かもしれんし。
>>511 英語わからないならムリしないほうがいいよw
>>509 ifとかdefaultとか予約語じゃない言語もいっぱいあるぞ
関数型系とかSmalltalkの派生とか
>>513 英語と考えれば辻褄が合うでしょw
だからほとんどの言語=英語が元になっているわけです。
>>516 if( a == b )
これをよめるヤツはプログラマーぐらいだろ
>>515 予約語かどうかは本質じゃねーw
プログラム言語はほとんど英単語が
元になってるってことだろ。
英単語そのものか、英単語の略語ばかりだ。
よってコーディングする時は
英語の意味を考えなさいということ。
>>517 ifが英語だからプログラマーは読めるよね。
gtaweg( a == b)
これ、読めるかい?
>>519 プログラマー外の英語圏の人間はすぐ解らんだろうと
いう意味で書いたんだが
Lisp の car や cdr が、以下の略であることぐらい、Lisp をかじったことのある人なら知っているでしょう。 Contents of the Address part of Register number Contents of the Decrement part of Register number
>>522 そりゃそうだろ。
そんな話はしていない。
ほとんどのプログラム言語は
英語が元になってることに異論はないね?
>>523 やっぱりcatやcdrも英語の略なんだね。
>>524 COBOLレベルなら英語が元になってるとは言えるかもしれんが
シンボルだけ英語使ってるものを英語が元になってると言われると
違和感が有るぞ
> シンボルだけ英語使ってる あ、認めたw シンボルだけじゃなくて 意味も英語の意味を使ってる。
文法は英語じゃなくが 単語は英単語だし 意味も英単語だ。 なのだからその意味に当てはまらない使い方をしたらダメ。
>>528 > 意味も英語だけど
int 変数 = 0;
classs Type { public Type(){} }
英語の意味でどう読むんだ?
>>527 俺は構文が英語じゃないから、言語全体は自然言語に近い必要はないと
いう意味でしかレスしてない。名前云々のレスといっしょにすんな。
>>529 変数は日本語ですが?
int ・・・ integerの略。なるほど整数か!
class ・・・種類
Type・・・型
public・・・公開
英語だと考えれば、辻づまがあう。
>>530 俺は単語が英語だから
その英語の通りの使い方をしろと言ってる。
>>532 なぜ英文として読まないといけないの?
俺は最初から構文は英語じゃないが
単語が英語であり、
その意味のとおりに使えと言ってるだけですが?
>>534 俺は最初から構文は英語じゃないからコードが英文に準じる必要はないと言っている
まぁ、
>>500 で余計なことは書いたが。
なら単語が英単語になっている理由は?
英単語の意味を無視していいなら、 英単語を使う理由はない。
名前と構文をごっちゃにするなって ダンボールに英語のラベルはってあったら、 ダンボールが英語に準拠してんのかよ
そうですが何か
つられて英語と書いてしまったが そもそも、自然言語に準じる必要が無いといだけで 英語かどうかは重要じゃないだろ。
>>539 XSLTとXMLの仕様をごっちゃにしてそうな発言だな
多分最近のaviにはH.264が入ってることが多いから
>>539 にとってaviはH.264がなんだろうな
ダンボールの中身が英語に準拠しているかもしれないと期待することは出来るかな
プログラムは自然言語ではないが 自然言語に似せて書くのが上手い書き方だろ。 何故なら、コンピュータが読むものであると同時に、人間が読むものでもあるからだ。
>>544 「個人的見解」って頭につけといた方がいいですよ。
>>544 人間が読む場合と、コンピュータが読む場合があるところまではいい。
ただし、人間が読む場合は、人間らしい人間が読む場合と、コンパイラみたいな人間が読む場合と、宇宙人が読む場合があるんだよな…
「個人的見解だが」
すべての人間に読みやすいプログラムというものは存在しないと思う。
なので、読む人に合わせた書き方が求められる。
これは、もはやソースコードを介したコミュニケーションであって、そういう意味では、やはりプログラマは物書きだなーと思うし、コミュニケーション能力が求められる仕事だなと思う。
>>547 すべての人間ではなく、
大部分の人間といえばいいだけの話。
>>544 COBOLが読みやすいか?
ならCOBOL使えばいい。
ひまわりでもかまわんぞ
>>550 すごいな。
たまたま英文風に読める文章を
持ってきて全てを語るなんてw
>>550 そのページが読みにくいのはなんでだ?w
>>550 は
自然言語とプログラム言語は白と黒のようにはっきり分かれておらず
プログラマは皆、灰色の領域で仕事をしているのだと判らせてくれる。
>>550 >['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
英文まねても読みづらいだけだな。
>>554 そもそも英語が読みやすい言語かっつうのもあるしな
しかし、単語は英単語であり、 その英単語の意味通りを使い方をしているのは どの言語も同じなのだ。
何が問題か解ってないコミュ障が居るな
じゃあ、話を最初に戻そう if(!strcmp(foo,bar)){ 問題はこれ。 strcmpは文字 比較の略であり、 ifはもし。 つまり、「もし(文字比較)なら」 という意味になるので、これはイラッとするコーディングである。
この話に対して、プログラム言語は、 英語の文法と違うとか的外れのこといいだして、 そうじゃなくて、単語は英語であり 単語の意味通りの使い方をするべきという 話だよって教えてるだけ。 それを分からず、文法が〜文法が〜と 的外れのことを言い続けてる。
違うね、ごめん。
>>559 >つまり、「もし(文字比較)なら」
>という意味になるので、これはイラッとするコーディングである。
問題は、文としての書き方なのに何でお前は名前に拘ってんだ?
> 問題は、文としての書き方なのに どこ見てそう思いましたか?
strcmpの戻り値が真偽値ではない、 真偽値ではないものを、もし(if)で使うなという 話ですよね?
>>564 文の話じゃねーよ。
真偽値を返さないものを
ifで使うのが気持ち悪いという話だよ。
568 :
567 :2012/04/29(日) 00:11:30.38
なぜ真偽値じゃないものをifで使うのが気持ち悪いかというと ifが、もし〜なら という意味だからでしょうね。
>>567 だからif文の中で真偽値を返さないものを返してる文の書き方がおかしいんでしょ
>>570 文がおかしい?
じゃあ、どういう文ならおかしくないというの?
”文”ですよね?
>>571 真偽値を返す関数を使った文だったらよろしいんじゃないでしょうか
>>572 つまり、式を変えるってことですねw
あれ?文の話じゃなかったのかいw
直感と反するのが気持ち悪い 一緒だったらって判定に!使うな
strcmpは「一緒だったら」ではなく、 「比較したら」
>>573 文として分かり辛いから文の中の式を直すってのがおかしいか?
もし(おなじである(a, b))なら なら気にならない。
>>576 文はおかしくなかったから、文はそのままで
式を書きなおしたんだろw
お前、文がなにかわかってるのか?
if文の定義・・・if (条件式) 真文
仕様書見てもこんな感じでしか書いてないぞ。
>>577 つまり、英単語の意味と合っていないということか。
>>575 大元のif文はどう見ても一致してるかの判定
それ以外の意図で書いてたらなお悪い
もし(ひかくする(a, b))なら だとわかりにくい さらに もし(文ひか(a, b))なら だからもう死ね
>>578 仕様書には書いてないから実現は可能だが、プログラムには意図を込める事が出来る。
プロなら使わない手はない。
>>580 > 大元のif文はどう見ても一致してるかの判定
もし(否定 比較する(a,b))
これを「aとbが一致した場合」と解釈するのは難しい。
もし( 比較する(a,b) == 差が0なら) こう書けばわかりやすい。
>>585 書き方のぜひはともかく文字列一致判定の定型文だろ
>>586 どんな顔してこんな当たり前の書き込みするのか興味深い
>>587 こんなのを定型文と言わなきゃいけない事自体がおかしい。
>>588 え? 当たり前のことを言ったような顔を
しているだけですが・・・?
>>578 if文 = if statement
CやC++だと、そもそも式も文も同じ意味なんだが
C/C++のif文は、値を返さないので式として使えませんよ? if式っていうのはこういうものです。(Scalaの例) val msg = if (true) "true dayo" else "false dayo"
>>591 文と式の違いも知らん奴が
さっきから喚いていたんだなw
594 :
仕様書無しさん :2012/04/29(日) 01:37:33.40
日本語として正しいテキストのやり取りでこれだけ揉めてるんだから、 言語としての正しさは、意思疎通の効率化の一要素でしかないってのを 自ら証明してる罠
>>595 日本語の議論でもこれだけ揉めるのだから、やはりプログラムは奥深くて楽しい。
What's your point?”
何か伸びてると思ったら、何の話してんの?
毎年この時期は色々とアレな人が湧くなあ、というお話。
↑ここまでイラッとするレススタイルの話 ↓ここからイラッとするコーディングスタイルの話
終了
>>602 理系とか関係なく
単にあなたがお馬鹿であるだけ。
三項演算ってのがあってだな・・・
それで?
ハンガリアン記法を使うなら使うで統一してればまだいいが、 ハンガリアンな変数名とそうでない変数名が混在しているソースコードはバカだと思う。
b p m_ g_ だけ付けてる。
それはハンガリアンではない
>>606 ハンガリアン記法で統一されていても、記法が実態と合っていないと、
もっとイラッつとする。不具合修正後にたまに見かけるんだが……。
システムハンガリアンをコーディング規約に盛り込む連中は漏れなく無能。
プログラムのお勉強的な意味でどうしてこんな事が必要だったのかを 若手に学習させるためにシステムハンガリアンは割りと良いんだよなw
システムハンガリアン使ってるヤツは、ハンガリアン使うときどうするんだ? 例えば、↓とかどう修飾してる? ptX; // ポイント単位のX軸 cmX; // センチメートル単位のX軸 dbY; // デシベル単位のY軸
fPtX nCmX dDbY
イラッとするな
他人のコーディングスタイルは常にイラッつとするものなんだよ
なにがハンガリアンだよハムスターかよ! 俺はローマ字で変数を使うからな!
だったら日本語でかきゃいいのに 最近のコンパイラーは日本語使えるんだぞ #define 整数 int #define 無 void #define 本体 main #define 戻す return 整数 本体(無) { 整数 値 = 0; 戻す 値; }
キモイwww
そうか? 英語で命名しても認識する時は日本語だからそんなに気にならないけど。
なでしこ思い出した
ひまわりでやれ
>>617 マクロの謝った使用法の中でも最悪だなこれ。
変数名に$aとか$bとかマジ勘弁
$iiiまでは許してくれ。
$とか通るのかよ。アセンブラでおかしくなるだろ?
phpならきっと・・・
むしろPHPでは$つけわすれるのがエラーの筆頭だろ
Perlも?
Perlは頭に何付けるか考えなきゃいけないから 他の言語を直前までやってたときに新規でソースファイル起こしたときの最初の数分だけかな忘れるのは
#define ZERO 0 #define ONE 1 #define TWO 2 … #define ELEVEN 11 驚愕したそして 12以降は普通に使われていた 俺は泣いた
よくあるコード改善本の指摘に「できるだけマクロを使うな(コンパイラを働かせろ)」というのがあるけれど 実際どれくらいメリットがあるのだろう・・・?
「マクロを使わない=コンパイラを働かせる」 の意味がわかんないんで教えて
Cの本読めば最初の章に出てくるだろ マクロの部分を処理するのは、コンパイラではなくプリプロセッサ (気を利かせることができて賢い)コンパイラを使え = (単純で馬鹿な)プリプロセッサを使うな
てか、マクロを多用するコードの方がコンパイラの仕事が増えるような気が。
一緒だと思う。
マクロ展開した後のソースがどんだけデカくなるのか見たことないのかよ! コンパイラさん凄い頑張ってんぞ!
>>633 知らない方がいいよ。それを知ったとき、おまえは地獄にいる。
>>636 ようは、コンパイラをプログラマの道具として使えってことだよ。
コンパイラが分かる形にしておくと、
コンパイルした時にミスを色々教えてくれる。
静的型付け言語ならではの、コンパイラを使った
快適プログラミングテクニックが生かせる。
プリプロセッサを働かせずにコンパイラを働かせろということだと思うが、 コードの肥大を防ぐのが目的なのかなんなのか
マクロは基本的に定数定義とか、移植性の向上のために使ってるな。
マクロ禁止って暗にCをディスってるような気がする。 C++かC#陣営の策略に違いない。
コメントは40カラム目から
switchには必ずdefaultをつけるべし ifには必ずelseをつけるべし
それ嫌いだわぁ else書いといて中身無しとか せめてプログラミング作法くらいは皆読んで欲しいところだ
switch () { default: ; } これはあり。というか、俺はいつもそうやってる。 defaultの考慮漏れはしていないし、defaultではやることないよという表明。 > ifには必ずelseをつけるべし これはあまり見たこと無いな。 「if〜else if〜には必ずelseをつけるべし」なら、見たことあるし、俺も実践してる。 switchのdefaultと同じ理由。
たまに頭が回らん時とか、if文の条件が書きづらい時とか if( !(条件) ){ 処理 } ってしないで if( 条件 ){}else{ 処理 } って書くのも他人から見たらイラッつとさせてるんだろうなと思った。
>>633 1.オーバーロード可能になる
2.using宣言、もしくは名前空間の別名で短い名前が使える
この2点だけでも結構楽になる。
リポジトリからソースを落とすとThumbs.dbがついて来た。 システムに必要なファイルだろうから消すなだと。
>>649 何もやることないよ
というより
書き忘れたのかと思ってしまう。
>>648 > defaultの考慮漏れはしていないし、defaultではやることないよという表明。
オレだったら、それはコメントに記述するなあ
そういえば以前の上司がどうしても『defaultは最後に書け』と言ってゆずらなかったな。
デフォルトに出会った時点で分岐終了するウンココンパイラなかったっけ
名付けて、運コンパイラ
>>653 defaultが無いとwarning出す静的解析ツールとかありがちなんで、俺はコードで書く。
>>653 俺はdefaultに assert(false) を入れとくなあ。
ミスの検出にも役立つし。
そこに assert(false); // 来ないはず とか書いてあるソースは見た事ある。 来ないはずの所に来るバグがあるって事なんだろうな、と思った。
>>658 いや、来ないのでは無くて、来ることもあるが処理は無しよ、って意味なんだけど。
来ないはずならエラー処理入れるわ。
いいこと考えた assert(true); // 入れとけばいいんじゃねw
定義増えた場合の取りこぼし対策でASSERTいれるのはアリ
でふぉるとさんはどんな条件にも引っ掛からなかったダメな子を許容してくれるお姉さんキャラ たまに「絶対に書いておけ」と言う参考書がある為に //ここに来る事は無い と言う書き残しをして居る時があるが nullやDBNull判定をすり抜けて来た0や空白さんがたまに来る 初期値はシステムで統一しろ
ifにelseは必要ない。 なぜなら、条件を満たしているか?という質問をするならば みたいしていない場合が存在するのは明らかだから。 switchに関しては、case一個だけ書くことなんてまずない Aの場合、Bの場合、Cの場合、じゃあそれ以外はどうなるんだ? ということになる。 取りうる値がA、B、Cの三つしかないというのであれば、 Aの場合、Bの場合、それ以外(default)。でいいはず。 defaultがないということは、なにか意味があるということなので それを明記するのが良い。
>>659 assertionはdefaultだけで使うものではない。
何のためにassertionを使っているかを考えれば分かる。
>>664 >ifにelseは必要ない。
お前は何を言っているんだ
bool値を返す関数で bool func(){ if(exp){ return true; }else{ return false; } }
途中で書き込んでしまった。。 bool値を返す関数で bool func(){ if(exp){ return true; }else{ return false; } } って書いてるのがイラッとする。
>>666 あれじゃないか○○であるの条件のelseは明示的に書かれていないだけで○○ではないのif文
つまり読みやすいとは別として理解しやすいと言う部分、何がしたいかをはっきりさせたい場合はifを2回書いた方がいい
つまりelseは要らない
>>669 「それ以外」の条件をいちいち列挙するの?面倒くせえ
面倒くさいだけじゃ済まないぞ わざわざ別に書いてる位だから、本当は別の条件があるのに記述漏れがあんじゃねーかって疑念が湧くし、 ifに入る条件がより限定されるような修正する際に、 else使うなら一箇所の修正だけで済むものを、使わない場合はelse相当のif文も修正が必要になる どう考えてもバグの誘因になる 言語仕様でelseが無いとか、switchのdefaultが無いならともかく、 言語仕様としてあって、更にそれを使うのに適した場面なら、それを使う方が良いと思う まぁ、全部にelseやdefaultを入れろって縛りはどうかと思うけど
>>668 どう書けばいいのでしょう・・・
ご教授していただけると嬉しいです
return (bool)exp; だろ?
else書くなって言ってるんだろ
gotoは基本的に使用しないこと ただしエラー処理や多重ループから抜ける場合などは使用した方が見やすくなる ・・・ったく、いつまでクヌースの呪縛に捕らわれてんの? 全面禁止だろ、いまどき
>>675 全面禁止ってことは、
breakもcontinueもreturnもダメってこと?
これらはgotoと同じ事出来るんだけど。
いや、だからだよ 今の言語はブロック制御に則ったジャンプ命令があるのに いつまでALGOL時代の「goto」という命令に捕らわれてるんだって意味
>>675 いつまで構造化プログラミングの呪縛に縛られてるの?
>>678 アウフヘーベンするならともかく、goto使うところに戻るんじゃただの退化じゃん。
>>679 今更gotoがどうとかどっちでもいいじゃん
>>673 return (exp) ? true : false;
かな
でも、おれ、三項演算子好きじゃない
こまった・・・
三項演算子を好んで使うやつなんか存在するのか?
bool func(){ bool result = false if(exp){ result = true; } return result; }
return exp;
>>683 エレキ屋あがりが「オブジェクトファイルを開いてみろ!if-elseと比べてこんなにシンプルだぞ!」と
しきりに勧めてくるのだが・・・・・実際どうなんだろうと思う
最近カンスト付きの加減算で好んで使ってたりしてる。 無理に使えとは言わないw num = ((num+hoge) > max) ? max : (num+hoge);
ifが戻り値を返したいって時は 三項演算子使うだろ。 var a; if(exp1) { a = 1; } else if(exp2) { a = 2; } else { a = 3 } var a = (exp1) ? 1 : (exp2) ? 2 : 3; どっちが見やすいかなんて一目瞭然だと思うが?
>>688 複数の判定がいるならswichかテーブル使ってしまうなぁ
三項演算子を使って一行で書ける時はよく使う。
>>688 はイラッ
>>689 switchだって戻り値返せないだろ?
var a;
switch(exp) {
case cond1 : a = 1; break;
case cond2 : a = 2; break;
default : a = 3; break;
}
var a = (exp == cond1) ? 1 :
(exp == cond2) ? 2 :
3;
値を返すならこっちのほうがシンプル
処理を分岐させたいなら if、switch 条件に応じて値を返したいなら 三項演算子
一番のネックは三項演算子をやたらに憎む奴らが多い事なんだよな まあ、IFの変わりに使うひとが大量に居たせいだと恨んでるけとw
三項演算子くらいラムダ式に比べたらまだまだまだまだ可愛い。
>>693 関数型言語では三項演算子(風)の記述が主流
三項演算子を嫌うような老害は
このあと消える。
老害って言葉好きだね。いつまでケツが青いままのつもり?
>>676 一緒じゃねぇよ全然ちげぇよ。
ダイクストラが提起した問題は、gotoそのものや、ジャンプじゃない。
処理ブロック(forやifといった分岐反復のまとまり)のネストを無視して、
処理ブロックから、処理ブロックに飛べる事が問題なんだ。
なんでgotoがあるのにbreakやcontinueがあるか解ってんのか?
>>688 3講演子の条件式をカッコでくくってんのがイラっとする
>>697 ダイクストラが提起した問題は、gotoそのものや、ジャンプじゃない。
処理ブロック(forやifといった分岐反復のまとまり)のネストを無視して、
処理ブロックから、処理ブロックに飛べる事が問題なんだ。
だから、処理ブロックから、処理ブロックに飛ぶようなことをしなければ
gotoを使ってもいい
x = 10 + ( n ? n / 100 : 0 ); こういうことしたいとき、条件にかっこつけやがると x = 10 + ( ( n ) ? n / 100 : 0 ); こんな感じでカッコが二重になんのが非常に見づらい
>>700 だからCにもgotoが残ってる
ネストを飛ぶとき警告だすぐらい仕様にいれても
よかったとはおもうが
当たり前だろw 条件式が変数一つの時に カッコつけるなよw (exp)という書いてある時のexpってのは 変数の意味じゃないだろ。
>>675 結局お前、否定されたぞw
goto全面禁止とかありえないってさ。
>>703 警告出すのは、ネストの中に入る時だろ?
ネストから出るときは、returnなどと一緒なので問題ない。
IClass a = (state) ? new ClassA() : new ClassB(); みたいに「確実に何か代入されるけど条件によって違う」場合に使うんじゃないかなぁ
>>704 式だろうと見づれぇよ
x = 10 + ( ( n > 0 ) ? n / 100 : 0 );
こっちの方が明らかにすっきりするわ
x = 10 + ( n > 0 ? n / 100 : 0 );
>>708 大抵変数作るのがめんどい時だろ。演算子なんだから。
function( 5 > n ? 1 : 9 );
とか
( max > n ? alpha : beta ).Execute();
みたいな場合。
x = 10 + n > 0 ? n / 100 : 0 ; 見難い
>>707 > ネストからネストに飛ぶときの話
”ネストから” ってのは必須条件?
x = (n > 0) ? n / 100 + 10 : 10;
>>712 ネストを1段上げる、ネストを1段下げるなら
goto使わんでも出来るし問題にならんだろ
>>716 「ここで確実にxが変わる」ってわかるじゃないか
「if使え」っていうことはわかんないのか。困ったな
>>717 カッコつけてブロックでインデントするぐらいならif使えといってんの
見づらいだろ
x = ((10 + n > 0) ? n / 100 : 0); みづらい・・・ カッコが好きならいっそ全部くくりゃいいのに x = ((10 + n > 0) ? (n / 100) : (0));
>>718 ifだと
if (n > 0)
{
int x =
}
else
{
int x =
}
って書けないじゃん
先にint xって書いても節でxx = って書くかもしれない
もちろんコンパイラがワーニング出すけど
>>714 面倒だろ。特にメンバー関数なんかは、引数2回書くのがだるい。
かといって、オブジェクトをifでポインターに入れて、
そのあとメンバー関数呼び出すのも面倒い。
( max > n ? alpha : beta ).Execute( arg_first, arg_second, arg_third );
他人に見せるか他人のを読むかという前提で 「おれがめんどくさい」っていわれたら もう何も言うことはない
>>715 なんの話してるの?
gotoで警告出す時の条件の話でしょ。
使わない時の話はしてないよ。
>>720 んな事はどうでもよくて、カッコつけて見づらい書き方するんなら
三項演算子つかうの止めろと言ってるんだよ
条件式や値のコードが極端に長くないなら、 処理を分岐させたいなら if、switch 条件に応じて値を返したいなら 三項演算子 この2つで決めればいいだけだろ。
>>724 カッコつけて見やすくする書き方なら
問題ないでしょw
>>724 変な書き方してたら「何か変なことしてるな」ってわかるじゃん
1行でさらっと流したら絶対見落とすぜ
>>723 gotoつかってネスト上げたり下げたりするのは、
他の構文と同じだから、警告だすなら
ネストからネストに飛ぶ時だけでいいでしょって話。
>>727 x = n > 0 ? n / 100 + 10 : 10;
こうだったら文句いわんよ
条件に括弧つけるのはif文の代わりって意味なんじゃないの? 俺ならbool値にも括弧つけるよ (flag)? って
三項式はメンバ変数のコンストラクタ渡しとかで使う
>>728 だから、”ネストから”ってのは要らないよね?
単に「ネストに入るときだけ」に警告でいいよね?
って話。
>>729 x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : defvalue;
こんな感じですか?
カッコつけたほうがいいよ。
x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 nantoka / 100 + defvalue2 : defvalue; こんな感じですか? カッコつけたほうがいいよ。
訂正 x = nantoka > 0 && nantoka < 100 ? nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 ? nantoka / 100 + defvalue2 : defvalue; こんな感じですか? カッコつけたほうがいいよ。
x = (((10 > a) ? a / 4 : 0)>((5 > b) ? b : 0) ? (( c == d) ? 4 : 2 ) : (( e || f ) : 3 : 1 );
x = (0 < nantoka && nantoka < 100) ? nantoka / 100 + defvalue : (100 <= nantoka && nantoka < 200) ? nantoka / 100 + defvalue2 : defvalue; こんな感じですか?
やっぱりカッコ多すぎると分かり辛いな
>>735 nantoka > 0 && nantoka < 100 ?
nantoka / 100 + defvalue : nantoka >=100 && nantoka < 200 ?
nantoka / 100 + defvalue2 : defvalue;
?で切ればいいだけだからすぐ解るじゃん
カッコあると余計迷う
>>736 x = ( (10 > a) ? a / 4 : 0 ) > ( (5 > b) ? b : 0 )
? ( (c == d) ? 4 : 2 )
: ( (e || f ) ? 3 : 1 );
>>737 最初と条件違うじゃねぇか。間違えるならカッコつけんなよ。
x = 10 > a ? a / 4 : 0 > 5 > b ? b : 0 ? c == d ? 4 : 2 : e || f ? 3 : 1;
三項演算って言語によって動作が違うから困る
長い三項演算子を一行で書く奴が馬鹿ということでw
>>741 x = ( 10 > a ? a / 4 : 0 ) > ( 5 > b ? b : 0 )
? ( c == d ? 4 : 2 )
: ( e || f ? 3 : 1 );
?より左が全部?より右の条件だって知らない人おおいの?
>>747 長かったら何行に分けようと莫迦だろう。
あと、副作用のある式が含まれてる場合も。
>>750 話しするたびに、無駄に疲れさせるタイプだとみた。
こういうタイプは浅い理解しか出来ないクセに
他人には1を聞いて10を知れみたいな理解を求める人が多い。
>>751 別段意味はないよ。
強いていえば、救い様のないレベルであることを
強調したい気持ちが伝わるといいなー、程度。
そこ大事なトコだった?
>>753 表現の仕方がイラッとする。
コーディングも同じようにイライラさせてると推測する。
そういう意味で大事なトコ。
>>740 commit前にformatter通すというルールがあるところだと、こういう、
改行で複雑な式の区切りを示すってやりかたはできないなぁ。
自然と、長い複雑な式は使わないようになってくる。
1行の文字数制限とかアホだよなーと思う。
右のほう見に行かなきゃ見えない部分は、どうせ後から読む奴には重要じゃない情報しか無いから。
全体の流れの把握を助けるために、敢えて長くしてるんだってばよ。
もちろん
>>740 のようなコトをやってない前提だけど。
エディタのフォントサイズを10にしてる 文字はみにくいが、全体が見渡せる。
758 :
757 :2012/05/13(日) 19:48:00.58
フォントサイズを小さくしてるからカッコがあった方がパッと見わかりやすい
>>755 そもそも長い三項目演算子書かなきゃいい
現実はせいぜいこんなもんだろ
z = n + ( 0 < x ? y / x : 0 );
「三項演算子の中にベタ書きで処理を入れるな」と
長い行のときだけスペース入れずに書いてあるのはかなりイラッとする 複数行にするよりスペース省いてでも無理やり一行で書いたほうが見やすいと思ってるのか
括弧でくくると見やすくなるの法則って、何法則だっけ?
プレグナンツの法則
C言語のくせに、インデックス指定が1から始まるのは 嫌がらせとしか思えない。
場合によるだろう month[0] == January, month[1] == February, month[2] == March ……よりも month[1] == January, month[2] == February, month[3] == March ……のほうが直感的だ
そういう問題じゃねぇ 下手したらバグの温床になる 0版にはゴミは入るし、 配列の要素数とループカウンターの 上限があわねぇし
その理屈だと日付も0日からはじめるべきじゃね? day[0] == 1, day[1] == 2
そんなもん配列にいれんな じゃダメ?
日付も0からはじめろ
噂の9月0日か… 確か1年を30日が12回ってゲームあったな プログラマにとっては楽そうだなと思った
カレンダーの仕様がおかしいから変えちまえ!ってことか潔いな
Luaの配列のインデックスが1からで結局綺麗に書くの諦めた覚えがある。
上に行ったら下から出てくる。 左に行ったら右から出てくる。 こんな世界もプログラマにやさしい。
> 左に行ったら右から出てくる。 これはいいんじゃね?
0はnullやfasleと混同しやすいから、バグを生む
fasle ?
#define fasle false 問題は解決だ
>>778 みたいな定義があった上で
そこら中でfalseとfasleが混在してたら
イラッ☆つとくるじゃ済まねーぜ
1ヶ月に28日有る月は何ヶ月有る?
12ヶ月
訂正、1年あたり12ヶ月
無限
コーディングスタイルの問題というのかわからないけど、 10年前の改修履歴が残ってるのを見るとイラッつとする
「コメント禁止。ソース内ではなくExcelファイルに対応するコメントをまとめること。」 という内部規約のプロジェクトのソースを貰った。 案の定ソースとコメントがずれまくっててシャレにならん・・・
コメント禁止の方はそれほど問題じゃ無いな 俺、コメントなんかほぼ書かないし
関数作るのに申請が必要。 関数名は申請番号をつける。
>>784 けれど、その履歴が熟成された30年物だったら……?
行数を出来る限り短くするのが俺のポリシー なので極力変数は切らない。 分岐は参考演算子のネスト。 俺流コーディングスタイル。
if(ture or fasle){ contineu; }esle{ fasle retrun; }
>>790 はぁ?
これでリターンする言語なんてあんの?
ああああ そゆことか。 こりゃ確かにイラつくわw
>>657 それはコーディングスタイルの話じゃないよね
/* この関数なんだか挙動がおかしいからとりあえずコメントアウト 中の人が悪さしているかも fn(); */
>>791 C言語
int true = 1;
int false = 1;
baseClassとかでいい物を、clazzと書く
コボラの書いたコードで 1ファンクションに3万ステップあった。
それはもはやコーディングスタイルの問題ではなく そいつのプログラミングスキルの問題だな
800 :
仕様書無しさん :2012/05/22(火) 22:47:53.70
>>684 それ自分はよくやる。戻り値を変数に居れて最後にリターンしたいから。その際に変数名で悩みたくない。
>>800 いやこれの注目点はif文の条件の出所じゃね
クラス変数としても使うなら引数として用意して欲しい
>>800 処理の見通しが悪くなるから俺はイヤだな
関数の前半で値が確定してるにもかかわらず
最後でreturnされたら、影響が後半で発生してないか
いちいち考えなきゃならんのがメンドイ
803 :
仕様書無しさん :2012/05/23(水) 09:33:43.27
>>684 は解釈の仕方がいくつかあるなw
自分的には finally 使わないで書く事多いからよくやる。
>>803 分岐とreturnの間に別の処理があるつもりで
反応してるやつも多いんだろ
>>805 まさかそのままだったのかwww
当然ながら処理が省略されてるもんだと思ってたw
分岐とreturnの間に戻り値に影響しない処理が入ってたらそれこそイラッとする
引数をアンスコ+大文字にする奴が居てイライラする int func(int _Hoge, int _Hage) みたいな感じ
>>809 C/C++なら、「それは非常識だ」と罵っていい。
public: ↓ private: この順番、どうよ?
というか無駄にprivate:があるのがイラッとする privateメンバーがあるなら、classのデフォルトアクセスレベル。 全てpublicならstructのデフォルトアクセスレベルでいい。
>>811 classを使いたい奴が第一に欲する情報は、公開されているメンバに関するもの
それが先頭にまとめられていれば見やすい
よってそのスタイルは何ら問題ない
>>813 言いたいのはメンバ関数だと思うが、それはさておき
クラスの素性を知るには、そのクラス特有の基本的管理データ、つまりprivate変数を見るべきじゃないのか?
漢のなかの漢な規約では 構造体は一切使わず、全てクラスを使う 潔いから、というのがある
>>814 普通はprivate変数を見なくても分かるように設計します。
クラスを編集するときの話は別な。
コーディングスタイルの話じゃないけど、javaの記憶クラスのデフォルトが publicでもprivateでもない中途半端なのがイラッつとする。
>817 しかも、明示的に"package"等と書けないのがイラッつきを加速させる
>>813 pimpl使えば気にならんだろ
class XxX
{
public:
;こう始まるほうがウザイわ
>>814 privateのメンバって、実装上の理由でたまたま持ってるだけだったりするから
クラスの素性を知るには、公開されているI/Fをまず調査する。
>>817 原則publicよりinternalスコープ使えって事だよ
いわせんな恥ずかしい
>>110 うちマジで、
> 入口一つに出口一つ
になりそうで、逸脱するときは手続きとれって事になりそうなんだけど、
まぁ俺今品証で直接は関係ないんだけど、文句でないのが不思議だ。
レガシーコードの中には間違いなくあると思うんだけどな。
みんなソース見せてくれないんで知らないけどw
perl書くときに、どうせ人に見せる事もないので、 C言語のように、main文がほしいと思って #!/usr/bin/perl -w use … &main; sub main{ } と書いてますが、イラッつとしますか?
他人に見せないのなら気にすることはない
>>823 最初からそう書くことは少ないけど、段階的にそうなることはあるなw
ベタで書く→サブルーチンを分ける→途中の修正で、面倒くさいからとグローバル変数を直接参照する
→収拾がつかなくなってきたところでmainを分離して、出てきたエラーを一気に修正する
オブジェクト指向ですね
違うから
>>823 -w は今時使わない
& は今時使わない
お前のコードは古い。
即ちイラッつとするコーディングスタイルである
軽口叩いてるコメントって書くのはいいけど読まされるとイラッと来るからやめて欲しい
まともな神経してたら、書くのも違和感を覚えるだろう。
変数名や関数名にROMAJIを使わないでください
samuraiとかninjaみたいに、英語にしたくてもアッチの国でローマ字で通っちゃってる言葉の場合はどうすればいいだろう。
配偶者特別控除なんて変に英訳されたらたまらん。
それはコード内で識別子に使わずに文字列データとして扱うべし
HaiguusyaSpecialKoujo
某社の自治体向けパッケージではそのまま「配偶者特別控除」だな 個人的には漢字識別子名は邪道だと思うが、視認性がずば抜けてるのは認めざるをえない
// オブジェクト作成に必要なコードをこの下に挿入します。
if(1==a) というスタイルで書かれたソースをメンテしたときに、 for(i=0;10>i;++i) i[dst]=i[src]; というコードを追加してやった。
>>840 普通に意味分かんない。
dst[i] = src[i] か?
a[b]でもb[a]でも参照するアドレスが同じ言語があるらしい そう皆さんもよくしってるあれです
意味がわからずただ反抗するバカっているよな
意味がわからずただ反抗するバカっているよな
>>809 _大文字や__はCなら予約語だな。
#ifndef __HOGE_H__
とかもイラッとする
>>841 Cすらわからん奴がここにいるとは、信じられん
わかりやすく書け、ってちょっとイラッつとしたw
そういうネタだろう
>>832 ローマ字でもあってればまだいい。
一見英語なんだけどつづり間違いってのがあって
どんだけ直したかったかw
ここでもまたUwaRiteか
この板の伝説の逸品のひとつだな
>>840 if(1==a)
for(i=0;10>i;++i)
はありだな。定数が左に来ないと
比較演算子が画面右に寄って見づらい
結局
>>840 はどういう意味なんでしょうか?
Cはやったことが無いのでまったく意味がわかりません
誰か教えてください。
Cの配列はポインタみたいなものだっけ もう五年くらい触ってないから忘れた
>>852 10>iはちょっといやじゃね?
数学の書き方からの借用でi<10が世界標準なきがする
>>853 通常、a(変数)==1(定数)って書く条件式を逆に記述してるから、他も入れ替えて記述したった!って事よ。
バカじゃないなら=を書き忘れた時の対策になる書き方の癖を付ける前に =を書き忘れない癖を付けるもんなw
フェイルセーフ
癖の問題じゃねえよどう考えても
int arr[]={ 1 ,2 ,3 ,4 ,5 }; という最高にメンテしやすい表記編み出したんだけど使っていい?
>>857 左に変数書くのは常識でも何でもないのに身勝手極まりない話だよ
寧ろ左に定数置く方が多数派だろうに。
if( S_OK == Xxxx() )
オプソや、MS、Oracleなんかのサンプルコードじゃ大概
こんな風に左定数。
>>857 >i[dst]=i[src];
この部分は動くんですか?
>>863 *( i + dst ) = *( i + src );
言語実装上の間抜けな穴と認識している 動作が同一だからといって文法に基づく意味が同じとはいえない
>>858 一つの言語しか使えない土方はそうかもしれんが、
たいていのプログラマは複数の言語を使うわけよ
等号が = な言語で仕事しているときに、ちょっとデバグでC++のソースを触ったりすると、
間違えることもあるのだよ
まともなプログラマなら「運が良ければエラーになる」ようなものに頼らない。
逆にSQLとか書いてると==でエラー吐かれてずっと悩む時があるもんな…
ねーよ
870 :
仕様書無しさん :2012/05/29(火) 18:19:43.91
>>863 自分で試さない奴がいちばんイラッつとする。
871 :
仕様書無しさん :2012/05/29(火) 19:43:14.85
int a = 0 ; int b = 0 ; scanf("%d %d" , &a , &b ) ; a ^= b ^= a ^= b ; printf(" a = %d \nb= %d\n" ,a , b ) ; みたいな感じで、一行スワップ書いたら怒られた
怒られたのはたぶん scanf() なんて使ってるから
873 :
仕様書無しさん :2012/05/29(火) 20:11:27.21
scanfって一度の使ったことない
874 :
仕様書無しさん :2012/05/29(火) 20:38:37.38
>>872 何でだよ
scanfのパターンマッチが理解出来てねぇだろお前
aとbが同じ値のときのこと考えてないから怒られたらんじゃね?
877 :
仕様書無しさん :2012/05/29(火) 23:15:03.81
>>871 自己満のトリッキーコード書く奴は怒られて当然
どうしてもそれがやりたきゃせめてマクロ化だろ
>>871 はそれ書いて何がしたかったの?
格好つけたかったのか?
入力にscanfを使っても何も感じない馬鹿が1名いるな 特有の臭さがあるんでこいつのレスはすぐ分かる
やっぱsscanf_sくらいは使って欲しいよな!
sscanfなんざ使うよりscanfの方が安全だし、 文字の取りこぼしも少ない 実際scanfを使うことは少ないが、 一時ファイルなんかを対象にfscanfを 使うことは多い
まあたまにやりたくなるよな 地獄のミサワ 「ふ〜ん、このトリッキーコード、3年位前に俺も思いついたわ〜」とか
sprintf(buf,…); int len=strlen(buf);
>>861 前職場の同僚にいたなあ>先カンマ
今のC/C++だと後カンマで書けと言わんばかりの仕様なんだが
アホみたいにステップ数を稼ごうとするのはコボラー時代からの悪習
前に見たC++のコードで while(1) { int Hoge = Hage(); if (Hogeの判定) { goto Label; } break; } : : Lablel: : ってのがあったんだけど、エラー処理にgoto使っているせいで変数宣言に いちいちエラーが出るのを回避するためににやっていたみたい。 よくまあ思いつくなぁwwwと思ったんだが、ちょっとイラッつとした。
890 :
889 :2012/05/30(水) 17:48:27.06
× Lablel ○ Label
>>889 longjumpだっけ?
関数越えのgoto
それしないだけマシだと思う。
>>886 は?scanfの使い方も知らん素人が
マ板なんか来るなよ
>>892 背伸びしてレスしても恥かくだけだよ
fscanfとsscanfは稀に使うことはあるが、scanfを使うことはまずない
try/finallyやまともな一行入力ライブラリが 標準でついてない糞言語にイラッと来る
>>887 長いSQL書いてたときは間カンマ(カンマで1行とる)にしてたなぁ。
あとSQLだと、
WHERE 1=1
AND a=hoge
AND b=hage
...
なんてのも。
WHERE 1 = 1 AND a = hoge AND b = hage
全体として少数派
てっきりコピペしてそのまま使わせないためにそうしてるものかと思っていた時期が私にも
サンプルなんて盲信するなよ
どこぞの教科書やサンプル通りに右に定数書くヤツは 条件分岐で何を一番に見るか考えてない
>>904 $ tar xfJ linux-3.4.tar.xz
$ cd linux-3.4/
$ find . -name '*.c' | xargs pcregrep '==\s*[A-Z0-9_]+' | wc -l
127939
$ find . -name '*.c' | xargs pcregrep '[A-Z0-9_]+\s*==' | wc -l
6971
フム・・・・
定数が右ばかりにあるLinuxは危険だ。
今すぐインターネットから切断した方がいい。
定数というより式であるモノを持って来てドヤ顔 しかも何が問題か解ってないという
そもそも「定数を左に置く」なんてC/C++のバッドノウハウであって、 警告レベルを上げたり静的解析ツールかませば一発で解決すること まぁ、C/C++はともかくとして、それをC#やJava等の他言語で実践している奴にはマジでイラッとくる
なんてこった読みやすくて素晴らしいGNUスタイルは定数を右に置くのか しかし、定数だけGNUスタイルに合わせるのは問題だな 改行もインデントも至高のGNUスタイルにあわせなきゃっ!
未だ定数を左に置くのはエラー出すためだけだと思ってるヤツが居るんだな()
定数を右に書くヤツは数個前のレスすら読めないそうだ
while( GetMessage( &message, 0, 0 ) > 0 ) 読みづらいっつうの
GetMessageの仕様は酷すぎて呆れるレベルだな
C/C++では、腐ったswitch文の代わりに if 〜 else if 〜を使うことも多い その場合、左定数の方が圧倒的に見やすい
はぁ
左定数狂信者はもう分ったから
右定数 信号は、赤いか 信号は、黄色いか 信号は、青いか 左定数 赤いか、信号は 黄色いか、信号は 青いか、信号は 中華プログラマには下の文法の方がしっくり来るかもな
英語の語順と一緒だろ
if(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx < y) よりは if(y < xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) のが単純に読みやすい
==だと左 大小だと<を使いたいから定数の一は固定じゃない こう言う人だって居るんですよ! 1 < a && a < 10
>>921 つまり、定数か変数かは関係なく、
文字列の長さで右辺か左辺を決めるという流派か。
惜しいけどもうちょっと頭使って一般化してみよう
if(0 == a){} else if(1 == a){} else if(2 == b){} else if(3 == a){}
if for while の後に空白がないのがイラッとする
>>921 そもそも長くて読みにくいと思うような式を条件式には書かんなぁ。
>>918 語順で分かりやすさが変わると思うなら
中置法言語なんかやめて後置法言語つかってろよ
>>928 条件式でしか使わん変数作って回避だろ下らねぇ
俺の場合は、変数左に置いてた方が「この条件式ではこの変数の値が見たい」ってのが明らかで追いやすいと思ってるなあ
>926 (・∀・)人(・∀・) デスヨネ
>>929 順序で読み安さ(理解しやすさ)は変わるだろ普通。
>>925 if(0==a){}
else
if(1==a){}
else
if(2==a){}
else
if(3==a){}
else
if(4==a){}
else
{}
他クラスの参照をメンバ変数に持っていたり、関数の引数にしていたりするクラスの宣言をするヘッダファイルに それらのクラスのヘッダをincludeするのは禁止 ↑ これのせいで、ソースのほうに順番に注意しながらそれらのヘッダをinclude たしかにものの本にはヘッダにヘッダをincludeするのは好ましくないとは書いてあるが なんか・・・・・違うのではないかと思う
>>936 C++だとしたら、ヘッダ内にヘッダで使用するクラスの宣言を書けばよいだけでは?
ヘッダ内で実態が必要ならともかく、参照やポインタだけなら宣言があればすむはず。
==の左右はどっちでもいいけど
>や<の左に定数を置かれるのはちょっと嫌(
>>922 除く)
数学の癖があるからだろうけどね。
>>936 そういう場合はincludeの代わりに前方参照宣言を書くか
pimplを使えばincludeに依存しないように出来る。
とはいえinclude禁止はやりすぎだね。
引数や戻り値の型がstringみたいなtypedefやtemplateだったらどうにもならん。
>>938 数学で言うなら比較は = 代入は := がよかったなぁ
a = a + 1 とか初見なら悩むぞ
pascal!
あの使い分けはたすかる
>>940 でも等号より代入の方が使用機会が圧倒的に多いんだよなぁ
代入の度に2文字タイプするのはうんざりする
APL「代入は“←”だろうjk」
>>939 includeのネストを禁止するだけだから、ソースの方にincludeすればいいだけ。
ただ、俺もそれはあまり好きじゃないな。
ヘッダ内で参照する型や定数を外部から差し替えられるとかtrickyな使い方は
思いつくけど、なんか他にはっきりしたメリットってあるのかな。
>>945 ソースにincludeはもうやっていてinclude順を注意するのが大変って事でしょ。
前方宣言やpimplでそれを減らせるよって話。
あるヘッダを使うのに他のヘッダを沢山includeしなきゃコンパイル出来ないのは異常だと思うな。
includeが問題じゃなくて ヘッダーに伴う速度低下が問題なら、 前方宣言用ヘッダー用意しとくと ある程度楽になると思う
>>946 あぁ、そっちじゃなくて「どうにもならん」の方。
boost、特にプリプロセッサを活用してるとアホみたいに重い。 なんとかしたいんだが?
タイムマシンを作ってビョビョーンスポッスポがC++を作る前にあぼーんしろ
そして元の時間に戻ってみると、ブビ達の楽園があったとさ
OLEが存在しないんでDelphiの天下だろ
C++がなかったとしても、ちょっと違うだけのJava類似言語が出てただろう。
もしかして: ビョビヨーンスポッスポッ グーグル先生はゆかいだなー
>>949 プリコンパイルヘッダを作るくらいしかないかなぁ
Smalltalkもそうだけどな だいたい構文:=の方が有名かもしれんが
まじかw:=だけだと思ってたぜ
折角だからネタでもw boolと比較する奴。組み合わせが多くて思考エネルギーが奪われるwww if (isDone() == true) if (isDone() != true) if (isDone() == false) if (isDone() !== false)
!==ってどうなるんだ?
>960 型が違うと成立。 型が同じで値が違うと成立。 型が同じで値も同じだと不成立。 !=だと、型が違っても暗黙キャストで値が同じになると成立。
>>960 すまんwww俺テキトーにコピペしてたw
>963 『この変数はこの型の値のみを格納する』って決まってる言語ではありえない発想だけど、 『ひとつの変数にどんな型でも格納できる』って言語もいっぱいあるからね。 後者の言語では、数値の 10 と文字列の "10" を比較するようなケースもある。 前者の言語だと関数で判定するとかになるだろうけど、後者の言語は演算子で対応してるものが多い。
>>964 おお、厳密非等価演算子というのか!ありがとう
しらんかったべんきょうになるなーwww
> 『ひとつの変数にどんな型でも格納できる』って言語もいっぱいあるからね。 最悪だな。 普通一つの変数には互換性のある型しか 入れないものだろう。 同じ名前の変数を違う用途に 使い回しでもしてるのか?
>>965 > 前者の言語だと関数で判定するとかになるだろうけど、後者の言語は演算子で対応してるものが多い
後者の言語って演算子が多くなりがちだよね。
== だけじゃなくて、 === だったり ne だったり
前者の言語は型ごとに演算子をオーバーロードできる言語が多いから
シンプルになる。
>967 たとえばPHPの標準関数strposは、『第1引数の文字列のうち、第2引数の文字列はどの位置にあるか』を返す関数だ。 先頭を 0 とし、見つからなかった場合は false を返す。 $temp = strpos("abcdefg", "abc"); if ($temp == false) { /* 暗黙の型変換により 0 と false は同値なので実行される */ } if ($temp === false) { /* 暗黙の型変換が行われないので 0 と false は同値ではないので実行されない */ } 2行目の条件文はおそらく間違いであり、3行目が正しい条件文だと思われる。 ではなぜこのような、間違いを誘発しやすい仕様なのかというと、理由はいくつかあるようだが、 1番大きいのはPHPがインタプリタ言語であるということだろう。 コンパイル言語ではコンパイル時点で型チェックを行えるため、型チェックに処理負荷がかからない。 いっぽうインタプリタ言語は、型チェックを行うとしたらそれは実行時に行われるため、すべての変数に型が定められていたら、 代入や比較の演算をおこなうたびに型チェックの負荷が発生し、しかもそれはコーディングの技術で回避するのは不可能となる。 だから、型チェックは『必要なときにのみ明示的に行う』という仕様になっている。
で、ほとんどが「必要な時」になるので 単に間違いやすいだけなものになるんだよね。
スクリプト言語って大抵お気軽に使えることを 前提に作っちゃって、想定外に規模が大きいものに使われ 始めると、お気軽に使える機能が、バグを誘発しやすい機能に なっちゃうんだよね。
>>967 とはいえ変数に型がついてる言語も多く無いからどこでもは通用せんだろ
C++, C#, D, Go, Delphi, Ada, PL/SQL, Simula, ActionScript, Dart, VB, VB.net, Java, Eiffel, Haskell, OCaml,
Fortran. COBOL(?)
動的型付け
*sh( bash, zsh等 ), bat, R, PowerShell, BeanShell, VisualWorks( Smalltalk ), Objective-C, Lisp, Schame, Logo,
APL, Perl, PHP, Python, Ruby, ECMAScript, Groovy, Clojure, E, BASIC, PL/SQL, VB, VBScript, MATLAB,
Lua, ColdFusion, AppleScript, PostScript, Erlang, Tcl, MUMPS
ついでに型無し
BCPL, B, Forth, SNOBOL, RPG
>>969 見つからなかったら-1を返すようにしとけばいいのに。。
やっぱPHP って詰めが甘いよな。
PHPである奴だな、型まで比較する奴。
>>972 シェルは盛りすぎだろ。あれは文字列でしかないぞ。
>>975 シェルだって配列や連想配列持てるぞ
あと、OOPL以外の動的型ならある意味どれも文字列で持ってると
正規化(みなす)できるだろ。関数の代入だって、実際はハンドルだろうと
関数名を持ってるとみなすことが出来る
PowerShellとか$aに.NETなクラスインスタンス全部ぶら下げられるし
次スレタイ案 イラッッつとするコーディングスタイル イラッつつとするコーディングスタイル
2 イラッつとするコーディングスタイル
イラッつとするコーディングスタイル == 2
++イラッつとするコーディングスタイル == 2 これならスレタイで内容が一発だろ
連投したかと思ったら被っただと…
だから定数は左辺にしろとあれほど議論されただろうに 2 == イラッつとするコーディングスタイル
そもそもマジックナンバーやめれ
つまりこうしろと TWO == イラッつとするコーディングスタイル
>>983 馬鹿、右辺に定数書いたほうがイラッとするから右でいいんだよ
>985 イイカンジのウザさだな
右辺に定数置くのがウザイってのは、代入ミスのチェックじゃなく 比較演算子が右によるからだと何度いわせれば・・・
もっともマクロや関数使えば左辺定数強制できるけどな SUCCEEDED( Function() )
このスレ吐き気する
左辺定数厨を皮肉ってんのか
うめ
one
two
(2 == イラッつとするコーディングスタイル) && (nextMethod());
((2 == イラッつとするコーディングスタイル) && (nextMethod())) == TRUE
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。