一文字変数を使うバカは人生の敗北者part1

■ このスレッドは過去ログ倉庫に格納されています
1仕様書無しさん
垢版 |
2013/03/30(土) 11:01:29.14
int i;←バカ意味わかんねーよ
2013/03/31(日) 07:58:28.21
一文字否定派って、じゃあ、そのループカウンタを配列の
添字として使用する場合の事も考えてもの言ってんの?
どうせ配列の名前も、長ったらしいんだろ?
その上、添字も長ったらしいの? 
どんだけ長ったらしいソースコード書いてんの?
それ、ひと目で配列って分かるの? 分からんだろ?
それくらい、可読性が下がるってことだよ?
2013/03/31(日) 08:34:59.74
使い捨てローカル変数が1文字じゃないとか、イラっと来るよね。
2013/03/31(日) 08:54:32.58
世の中に広く普及している手法にモノ申す俺ってカッコイイ(キリッ

さしずめ、こんな感じか
2013/03/31(日) 11:44:35.47
>>87
自動変数をすべて1文字にしてるキチガイ
2013/03/31(日) 11:49:34.18
レジスタ名ですら2文字なのにね
2013/03/31(日) 12:16:32.23
>>84
知らんならぐぐってみてなんで晒されてるか察せよ
そのくらいできないのかと
2013/03/31(日) 12:55:06.39
>>91
ヘビーなネットユーザーしか知らないようなことを
何でいちいち調べてそこまでやらないといかんのか。
常識レベルのことなら晒されても仕方ないが内輪ネタみたいなもんだろ。
内輪ネタを知らないやつを叩くとかちょっと理解できん。
2013/03/31(日) 13:00:53.85
かくして話題をそらす事に成功したのであった
2013/03/31(日) 14:13:49.08
知らんならおかしいと思った時点でぐぐればいいだろw
2013/03/31(日) 14:21:17.81
問題解決能力がないから、俺流の頓珍漢な流儀を
でっち上げて、世の中に問題を作り出している感じ
2013/03/31(日) 15:33:38.61
>>86
ループカウンタには、配列に関連する名前ではなく、ループに関連する名前を付けるべきだろう。
配列か分からないと言うのは、配列の添字に使われるか分からないという事だろうか?
それは[]内に入るから分かるとともうが。
2013/03/31(日) 15:40:06.06
一文字程度の変数だと、[ ] の中に書いても何ら違和感がないが、
長ったらしい変数名だったら、そもそもどこからどこまでが [ ] の
中なのか、パッと見で分からんだろ。
それとも何か? 配列の位置を算出する変数をわざわざ用意して、
そいつに代入してから使えってか?
で、その変数名に一文字変数とか使っちゃダメだってか?
2013/03/31(日) 16:04:12.62
お前らこっちのスレに行け。

http://kohada.2ch.net/test/read.cgi/prog/1364608889/l50
2013/03/31(日) 16:04:57.02
すまん間違えた。向こうにスレに書こうとしたw
2013/03/31(日) 16:08:49.97
こっちが本スレ

これからコードを書く人に絶対やって欲しいこと
http://kohada.2ch.net/test/read.cgi/prog/1362887297/
2013/03/31(日) 16:09:50.45
言えることはただひとつ
スレ主はどうしようもない馬鹿
良くもまぁ厚かましくマ板に書き込めたなぁ…
2013/03/31(日) 16:42:06.43
>>97
i,j,k使うやつはすぐバグ出すんだよ。
配列アクセスでjと書くべきところをiと書いてたりな。
2013/03/31(日) 16:47:45.32
でも、全然バグ出さない人もi,j,k使ってるよ。
2013/03/31(日) 16:55:50.19
>>97
ちょっと待て。
[]内に文字数制限などないから、そのまま使えばいいだろう。
長すぎるなら略号3文字程度にするてもあるが、
意味が読取れない場合が多いようだから、長いままの方がいいかもしれない。
2013/03/31(日) 17:10:12.44
お前は壊れたスレに帰れ
過ぎた話題を掘り返すな
2013/03/31(日) 18:04:21.39
100人いたら95人から理解を得られる記述をするのがプロ

極める言語は一つでも色々な言語を使いこなせると煮詰まってくる

詰将棋に近い感覚
2013/03/31(日) 18:58:18.82
それ以前に発想が詰んでるだろ
2013/03/31(日) 19:06:02.33
だーかーらー、ii, jj, kk にすればいいじゃん。 

反一文字派も、3文字はOKって言ってるんだし、
だったら2文字でもいいよね? ね?
2013/03/31(日) 19:11:22.01
意味が本人しかわからない変数名を付ける時点で
他の開発者のことを考えられないアスペ確定。
2013/03/31(日) 19:18:20.80
出た、実は本人がアスペ、というパターン
2013/03/31(日) 19:49:20.28
>>106
無理だよそんなの。人によって書き方全然違うから。
規約云々とか言ってる連中いるけどそんなので統制利かないから。
2013/03/31(日) 19:50:33.03
i, j, kの代わりに
index1, index2, index3を使っても
何も分かりやすくなってないんだけどなw
2013/03/31(日) 21:49:41.31
変数名なんて1文字だろうが単語だろうが臨機応変でいいだろ
2013/03/31(日) 21:59:35.19
>>108
112の言う通りただ長くしても意味がない。
iもiiもcntもindexも同じだ。
1、2と3の間には明らかな差がある。
それを考えると1の方が優れていると言えるのではないか?
2013/03/31(日) 22:21:30.43
厨二病時代の話だけど、やたら長い妙な変数名をつけちまったことあった
恥ずかしい話だ
2013/03/31(日) 22:31:54.24
極端に短い変数名だとSubversionやGitに正しく拾ってもらえないだろ
2013/03/31(日) 22:46:40.74
メソッド名が長くなる傾向はあるが、変数名はそこまでいかないだろう。
普通は単語3語以下で単語先頭は大文字。
レガシーCの場合は、長い場合は略称を使う。レガシーCの業務ソース場合は、その前にi_とか入るが。
Ofは使わないな、メソッドじゃないのだから。
2013/03/31(日) 23:00:17.80
関数の型を関数名に含める方式(通称ハンガリー方式)なんて使う連中もどうかしてる
そんなことをしなくてもコンパイラは型を知っているし、型チェックもできる
結局はプログラマ自身を混乱させるのがおち
Microsoft が不安定なプログラムを作っているのもうなずけるよね
2013/03/31(日) 23:28:14.22
ハンガリー方式?
システムハンガリアン方式だろ。
2013/03/31(日) 23:55:37.98
>>118
> そんなことをしなくてもコンパイラは型を知っているし、型チェックもできる

その理屈で言えば、ghsdfbkjslみたいな意味のない変数名でも
コンパイラは型を知っているし、型チェックもできるし、
正しく動作する。

えとな、名前っていうのは、コンピュータのためではなく
人間のためにつけるんだよ。
2013/03/31(日) 23:56:30.77
>>118
クラス型になってIDEも進化した今は、ほとんど使ってない。
ただレガシーCの場合は、プリミティブ型全盛で、さらにポイントがあるから、
それなりに有効だぞ。
2013/03/31(日) 23:58:06.76
糞コテはいい加減巣に帰れ
2013/04/01(月) 00:01:51.93
>>122
俺に居られると困るのか?
2013/04/01(月) 00:05:37.11
色々とちょっとずつズレてるから迷惑というかウザいんだと思う
2013/04/01(月) 00:08:17.75
あーなるほど
2013/04/01(月) 00:12:46.60
>>124
そんなにズレてないだろう。
俺より金星を怒れよ。
2013/04/01(月) 00:26:47.11
まあずwwwwww(笑)
2013/04/01(月) 00:35:11.80
>>116
文字列で比較してるんだから拾えないとかありえんよ
2013/04/01(月) 01:06:52.53
>>125
得意技は分身の術か?
2013/04/01(月) 01:10:58.12
>>125 = >>129
一人で何やってるの?
メアド間違ってるよ。
131おじゃばさま
垢版 |
2013/04/01(月) 01:24:47.43
>>130
一人じゃないよ。
ハンドル名間違えてるぞ。
2013/04/01(月) 02:16:33.03
ここまで自演でした、すみません
2013/04/01(月) 07:23:19.36
一文字変数禁止派は、多相型の型パラメータも
List<T> じゃなくて
List<TypeParameterOfList> とか書いてるってこと?
134おじゃばさま
垢版 |
2013/04/01(月) 09:55:28.31
>>133
それは型の方だから関係ないだろうし、クラス名は長くて普通だろう。
2013/04/01(月) 10:07:46.81
型変数という変数なんだが...
2013/04/01(月) 11:45:25.10
>>133
もちろん、ContainerType とか AllocatorType とか、それが何なのかを書くべき。


それとは別に数学などの慣例なら i j k n x y z などはそのまま使うのが当然。
vt = v0 + g * t;
で十分わかりやすい。
137おじゃばさま
垢版 |
2013/04/01(月) 19:13:57.38
>>136
学生の組み方だな。
単純な数式ならマクロにすべきで、
複雑な数式なら関数にして長い変数名を使うべきだ。
2013/04/01(月) 19:32:22.27
マクロってC言語のか?
C++ではDeprecatedなのだが。
139おじゃばさま
垢版 |
2013/04/01(月) 20:14:04.66
>>138
マクロはレガシーCの場合だな。
クラス型言語の場合は、まず算術クラスにないか探す。
なければ自分で作るが、長い変数名を使うのがいいだろう。
2013/04/01(月) 20:58:24.66
ドカタは数学の素養が無い文系が多いから
数学の慣例なんて意味が無いよね
2013/04/01(月) 21:11:04.05
>>118はコピペだぞ
ttp://archive.linux.or.jp/JF/JFdocs/kernel-docs-2.2/CodingStyle
2013/04/01(月) 21:53:26.30
>>140
自己紹介乙w
143おじゃばさま
垢版 |
2013/04/01(月) 22:03:06.01
>>140
ああ、意味ない。
学校の授業ではないのだから。
2013/04/01(月) 22:07:57.60
>>141
だからどうした?

「コンパイラが知っている」ということに
意味が無いのは本当だろ?

ソースコードは汚くても、コンパイラは適切に処理できる。
だからって汚いコードでOKということにはならない。

人間が理解しやすいコードを綺麗なコードと言うんだ。
人間のことを一番に考えましょう。


ハンガリアンがだめなのは、コンパイラが知っているからではなく別の理由。

btnRun、buttonRun、runBtn、runButton、run_button
color_number、numColor、nColor、iColor
これらはハンガリアンか、それとも単に名前を略しただけか、
前につけるのはNGで、後ならOKなのか?
ハンガリアンの本当の問題点は何か。それを本当に理解している人は少ない。
2013/04/01(月) 22:15:29.99
>>144を読む限り>>144はハンガリアンを理解しているようには見えない。
2013/04/01(月) 22:17:39.01
初出が「ハンガリー方式」な時点で察してあげなよ
2013/04/01(月) 22:21:11.68
>>145
バカか?

俺は理解している、なんて一言も書いていない。
こういう完全に理解していない奴は議論をするなという風潮が
日本をダメにした。
2013/04/01(月) 22:22:45.09
>>145
そういうことだ。>>144がどうかではなく、
お前はどうなんだ?ってことだ。
2013/04/01(月) 22:26:12.17
そんなこと理解する必要ない
ユーザーからは一切触れることのないどっちでもいいことだ
2013/04/01(月) 22:27:40.23
>>146
念の為に言っておくと、初出はこれの英語版

Encoding the type of a function into the name (so-called Hungarian notation) is brain
damaged - the compiler knows the types anyway and can check those, and it only
confuses the programmer. No wonder Microsoft makes buggy programs.

って書いてあるから、Hungarian notation

Hungarian notationの日本語訳がハンガリアン記法
2013/04/01(月) 22:35:38.56
Hungary とはどこにも。
2013/04/01(月) 22:44:17.08
Hungarianってかいてあるよ

> なお、ハンガリアン記法の名称は考案者チャールズ・シモニーがハンガリー出身であることに由来する。
2013/04/01(月) 23:17:45.02
すぐに話題がそれるのが、オマエラの悪いところ
2013/04/01(月) 23:42:47.59
ハンガリアンでもアプリケーションハンガリアンはOKとされている。
ただ最近の言語はクラスや名前空間できっちりオブジェクトを識別できるので
アプリケーションハンガリアンは出番がなくなった。
2013/04/01(月) 23:44:10.81
742 名前:仕様書無しさん 投稿日:2013/03/31(日) 22:03:39.55
>>692,>>699
思い込みで勝手にニュアンスを付加するな。
正確に訳すと、以下のようになる。

One-character variable names should be avoided except for temporary "throwaway" variables.
一文字名の変数の使用は避けるべき。ただし、一時的な「使い捨て」変数は除く。

747 名前:仕様書無しさん 投稿日:2013/04/01(月) 05:01:24.13
>>742
なにその中学レベルの訳文w

A should be B except for C の
except for Cは「Cは除く」よりは「Cの場合はその限りではない」のほうが原語の意味に近い。
もし「Cは除く」ぐらい強い除外をするのであれば、
A except for C should be B.
もう少し柔らかめな表現なら
A other than C should be B.
という英文になる。こんぐらいわかっとけ。

749 名前:仕様書無しさん 投稿日:2013/04/01(月) 09:02:33.58
>>747
>except for Cは「Cは除く」よりは「Cの場合はその限りではない」のほうが原語の意味に近い。

勝手に自説に有利なように訳語を捻じ曲げるな。
そういう意味になる場合もならない場合もなる。
特にそういうニュアンスを示す表現が前後に無いのであれば、
except forはプレーンな「除く」という言葉を使うべき。
2013/04/01(月) 23:45:13.89
749 名前:仕様書無しさん 投稿日:2013/04/01(月) 09:02:33.58
>>747
>except for Cは「Cは除く」よりは「Cの場合はその限りではない」のほうが原語の意味に近い。

勝手に自説に有利なように訳語を捻じ曲げるな。
そういう意味になる場合もならない場合もなる。
特にそういうニュアンスを示す表現が前後に無いのであれば、
except forはプレーンな「除く」という言葉を使うべき。


750 名前:仕様書無しさん 投稿日:2013/04/01(月) 10:04:55.71
>もし「Cは除く」ぐらい強い除外をするのであれば、

ほとんど英語じゃなくて日本語力の問題だな。
「除く」は単に除外の意味であって、強いも弱いも無いよ。


752 名前:仕様書無しさん 投稿日:2013/04/01(月) 11:54:17.90
まあどっちにしても除かれてるのなら使っていいってことじゃん。


753 名前:仕様書無しさん 投稿日:2013/04/01(月) 12:11:16.23
そう。 この文が意味するところは、それ以上でもそれ以下でもない。


754 名前:仕様書無しさん 投稿日:2013/04/01(月) 22:10:17.14
いや、歴史的経緯でしかたなく見逃してあげる。というニュアンスが含まれているのだよ


764 名前:仕様書無しさん 投稿日:2013/04/01(月) 23:15:40.21
>>754
訳者による過剰な深読みって奴だな。
2013/04/01(月) 23:47:56.25
2行にまとめろゴミ
2013/04/01(月) 23:51:53.03
一文字変数
使用禁止
159仕様書無しさん
垢版 |
2013/04/01(月) 23:54:14.57
ハムスターの話題と聞いて
2013/04/02(火) 00:16:24.55
>>157
は屑
2013/04/02(火) 00:58:20.95
>>152
ハンガリアンとはあるがハンガリーとはありませんね?
2013/04/02(火) 02:21:11.83
プログラマは人生の敗北者
2013/04/02(火) 02:39:01.34
何を今更
2013/04/02(火) 03:01:46.10
>>161
アメリカンとは書いてあるがアメリカ人とはありませんね。みたいなこと言うなよw
ハンガリアンで、ハンガリー人って意味なんだよ。
2013/04/02(火) 03:02:20.13
訂正

ハンガリアンで、「ハンガリー人」や「ハンガリーの」って意味なんだよ。
2013/04/02(火) 03:05:33.49
http://www.knonline.net/d/?date=20090515

> ハンガリー記法はマイクロソフトの技術者、チャールズ・シモニイが
> 考案し彼がハンガリー人だったのでこんな名前で呼ばれるようになりました。
>
> この人はWordなどの開発に携わった人で優れた実績を上げました。
>
>
>
> 彼が考えたハンガリー記法の本来意図は変数の種類・用途を示すことであって、
> 実は型を示すことではありませんでした。
>
> 種類というのの例をあげると、座業系などがあげられます。

> これが本来チャールズ・シモニイが意図したハンガリアン記法でした。
>
> 同じ型でも混同してはいけない変数の意味(種類)を変数名に与えるというアイデアです。
>
> これなら誰が見ても変数の意味が明確に分ります。
>
> 現在ではアプリケーションハンガリアンと呼ばれたりします。


読んでおくといいよ。
2013/04/02(火) 03:23:15.95
だめだこりゃ
2013/04/02(火) 03:24:35.22
なにがだめなの?
169おじゃばさま
垢版 |
2013/04/02(火) 08:19:35.91
型を変数名に入れる習慣は、レガシーCの業務プログラムのコーディング規約に多い。
その名残でC++のコーディング規約に入っている場合もあるが、基本的に無意味だ。
しかし無意味でもコーディング規約に入っていれば無視できない。
その場合はコーディング規約を変更する事だ。
理由と歴史を説明すれば大体変更になるが、変更出来なかった場合は、従うしかない。
まあ、普通の仕様書と同じだな。
問題があれば指摘し、それでも問題なしと判断されれば従う。
2013/04/02(火) 08:25:32.47
システムハンガリアンは最初から不要
phantom typeが使えればアプリケーションハンガリアンも不要かも
171おじゃばさま
垢版 |
2013/04/02(火) 08:40:14.61
一文字変数が禁止されている場合も、もし使いたいならコーディング規約を変更する必要がある。
しかし、現在は単語で区切に大文字を使う、理解しやすさ優先が主流なので、変更出来る可能性は低い。
禁止されていない場合は、ルール上は使用可能だ。
しかしその場合でも略号使って3文字程度にした方がいいだろう。
それ程冗長ならず、理解しやすさもそれなりに確保される。
2013/04/02(火) 09:13:37.69
ドカタとそれ以外で別々のコーディング規約を使えば
このスレの問題は解決する
2013/04/02(火) 11:30:52.99
>>172
ドカタとそれ以外が混在してるプロジェクトがほとんどなんだけど
174おじゃばさま
垢版 |
2013/04/02(火) 20:23:47.51
>>172
それでは、コーディング規約の意味がないな。

ところで一文字変数の利点は何だ?
本人が見やすいだけか?
2013/04/02(火) 20:30:30.22
どうせドカタの書いたコードなんて汎用性のかけらも無くて
書いたドカタ本人しか読まないんだから
好きにしたら良いんだよ
2013/04/02(火) 20:54:10.89
ループカウンタ程度なら i, j, k でもいいだろ
それとも TheLoopCounter0, TheLoopCounter1, TheLoopCounter2 とかを使ってるのか?
2013/04/02(火) 21:14:23.97
文系のやつらって数式でもx, y, zとか使わずに
単語使って書くじゃん?それと同じことだよ
2013/04/02(火) 21:28:54.93
プログラミング"言語"なんだから文系の書き方のほうが適切じゃね?
2013/04/02(火) 21:30:10.04
"プログラミング"言語なんだから文系の書き方のほうが適切じゃね?
2013/04/02(火) 21:38:32.19
プログラミングは数学である
2013/04/02(火) 22:22:13.47
んなこたーない
2013/04/02(火) 22:31:23.49
「言語を用いるのだからプログラミングは文系分野である」という主張が真なら、
「量子論の論文は言語を用いて書くのだから物理学は文系分野である」ということになる
183おじゃばさま
垢版 |
2013/04/02(火) 22:42:03.09
>>176
だから、それではi、jと変わらないだろう。
何のループか分かるような変数名をつけるんだよ。
1 payment = price[containerNo] * quantity;
読取れないか?
2013/04/02(火) 22:49:00.93
>>183
ループカウンタなんだから、priceという配列なりvectorなりの要素を総なめるんだろ?
その場合は i でいいんじゃね?

for (int i = 0; i < price.size(); ++i) {
 payment = price[i] * quantity;
 doSomething(payment);
}

たまたまpriceの添字がcontainerNoと一致するような仕様だったとしても、
ここでその意義を強調する必要性は薄いんじゃね?
2013/04/02(火) 23:12:18.94
理屈を言語で記述したりルールや命名規則を策定するなんてまさに文系の お仕事 じゃないか!
プログラミングなんてめんどくさい作業は文系にやらせて俺ら理系はもっとまともなことしようぜ。
理系技術者ばっかり迫害されるのなんてもうこりごりだ!
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況