これからコードを書く人に絶対やって欲しいこと

このエントリーをはてなブックマークに追加
1仕様書無しさん
もしくはやって欲しくないこと
先輩方のアドバイスをください
2仕様書無しさん:2013/03/10(日) 12:54:30.26
【萌え画像】うちの子猫に初音ミクの格好させてみた(*´Д`)ハァハァ
http://engawa.2ch.net/test/read.cgi/jobs/1361676127/
3仕様書無しさん:2013/03/10(日) 13:03:02.18
疑問形とか「とりあえず」のコメントを残すな
4仕様書無しさん:2013/03/10(日) 13:03:02.48
常識を勉強しろ
まず自分の頭で考えろ
人のせいにするな、コピペしたからなんて理由になんねーよ
5仕様書無しさん:2013/03/10(日) 14:49:59.12
俺に後始末させるな
6仕様書無しさん:2013/03/10(日) 15:50:33.32
テストコード書け
7仕様書無しさん:2013/03/10(日) 16:34:44.54
修正の量(分かりやすく言えばdiff結果)を最小限にしようとするな。

再設計を行なって、正しく修正しろ。
8仕様書無しさん:2013/03/10(日) 16:34:57.30
>>6
それはまだはえーよw
分かってない奴が事務的に書くテストコードなんて害悪でしかない
9仕様書無しさん:2013/03/10(日) 16:39:18.42
>>8
害悪だとわかった時点で直せばいいだけ。

害悪コードを放っておくな。腐ったミカンと一緒だ。
害悪コードをほうっておくと、それを真似てどんどん腐ったものが量産される。
10仕様書無しさん:2013/03/10(日) 16:40:23.00
最初から、最高のやり方でやれ。最高のやり方を探せ。
「お前にはまだ早い」だとという言葉に耳を貸すな。
11仕様書無しさん:2013/03/10(日) 16:43:56.60
短いコードであってもパッと見て意味がわからないのなら
関数(メソッド)を作れ。

コメントを書くぐらいなら
適切な名前の関数を作ったほうが良い。

例えば、正規表現を書くよりも、その正規表現で
やりたいことを意味する関数を作ったほうがいい。
12仕様書無しさん:2013/03/10(日) 16:47:33.91
動的型付け言語なら高機能なテキストエディタを使え
静的型付け言語ならIDEを使え。

なぜなら、動的型付け言語ではIDEのサポートが十分に得られない。重いだけ。
静的型付け言語はコード自体は冗長になるが、IDEのサポートで大幅に生産性が上がる。
13仕様書無しさん:2013/03/10(日) 16:49:32.42
人力テストは極力なくせ。

人力テストとは、ブラウザを開いてフォームに値を入れてクリックするとか
アプリを起動してメニューを選んでクリックするとか、
出力ファイルを眺めておかしい所がないかチェックするとか、
そういうことを人間が毎回操作してテストすることだ。
14仕様書無しさん:2013/03/10(日) 16:53:02.79
理由が書いてない(納得出来ない)
コーディング規約はゴミだ。作るな。従うな。

初心者のためのコーディング規約は糞だ。
(難しくてわからないから)○○機能は使わないこと。

糞な規約の例として
三項演算子は使わない。
クラスは作らない。
継承は使わない。
等がある。
15仕様書無しさん:2013/03/10(日) 16:55:11.95
コードは書くことよりも、読む時のことを考えろ。
短く書いたとしても、読みにくければそれは駄目なコードだ。
コーディングにかける時間の8割は、コードを読むことに使わている。
16仕様書無しさん:2013/03/10(日) 16:55:33.56
人売り営業のためのスレ
17仕様書無しさん:2013/03/10(日) 16:57:49.17
最初から正しいコードを書くことにこだわるな。どうせ無理だ。
そうではなく良くないコードから正しいコードへ書き換える手段を身につけれ。
18仕様書無しさん:2013/03/10(日) 17:01:08.92
循環的複雑度。これを早い段階で計測できるようにしろ。
客観的にコードの汚さ、目安が計測できる。
これは各言語ごとにツールが有るはずだ。
19仕様書無しさん:2013/03/10(日) 17:05:02.98
警告は有効にし、警告レベルは最大にしろ。
エラーはログに表示させ、そのログを見ることを覚えろ。
場合によっては、それができる仕組みを作れ。

あれ? なぜか動かない?原因がよくわからない。などという時
実はちゃんと設定やコードを書けば、起きてるエラーが取得できる事が多い。

余談だが、データベースの設定に警告レベルがあったりもする。
20仕様書無しさん:2013/03/10(日) 17:08:37.17
初心者が何かに関して勉強したいと思ったら、本は最低二冊買え。
簡単でわかりやすい本と、難しいが間違いが少なく詳しく書いてある本だ。

いきなり難しい本では挫折するが、簡単な本には間違いが多い。
簡単な本は不要になったら捨てて良い。
21仕様書無しさん:2013/03/10(日) 17:41:11.53
相手が自分と同じ知識を持っていると思うな。
それがたとえ先輩でもだ。
分かりやすく書くことに労力を惜しむな。
耳を貸すなとかいうネガティブな言葉が出て来たら、自分の中でその理由が納得できるまでは鵜呑みにするな。
22仕様書無しさん:2013/03/10(日) 17:46:28.16
めっちゃ勉強になりますわ
23仕様書無しさん:2013/03/10(日) 17:50:58.18
「言語・ライブラリにバグが有るようです」
「こういうことは出来ないようです」

初心者が口にしたら怒られるセリフ。
なぜなら実際には「お前が間違ってるから」
24仕様書無しさん:2013/03/10(日) 17:52:04.87
ソースコード管理ツールを使え。
gitやsubversionのことだ。
25仕様書無しさん:2013/03/10(日) 17:59:02.46
特定の言語をディスるな。
特に自分がよく知らない言語はディスるな。
反論されて恥をかくだけ。

言語をディスっていいのは、何かの言語の作者だけだ。

言語の作者が自分で作った言語を褒めて、他の言語をディスるのは
営業的な意味で当然やるべき行為だからだ。
だが他人がそれを真似るな。鵜呑みにするな。
26仕様書無しさん:2013/03/10(日) 23:02:59.30
>>20
特定の本やサイトだけで勉強すると、間違って覚える可能性が高いというのもある。
特に概念的なもの。オブジェクトとか。
27仕様書無しさん:2013/03/11(月) 03:37:41.65
コードと直接関係はないけど
何かでエラーが出たりした時に、
なにも調べず、質問サイトで質問はやめて欲しい。
28仕様書無しさん:2013/03/11(月) 03:55:04.65
エラーメッセージ(英語)を読むこと
29仕様書無しさん:2013/03/11(月) 09:56:30.37
お前らが言うようなこと実践出来るような裁量をコーダーに与えられるの?
30仕様書無しさん:2013/03/11(月) 12:18:06.83
さすがにマ板だな。
「先輩の言うことを良くきけ」がなかった。
ニュース系の板のプログラムスレには絶対いるのに。
31仕様書無しさん:2013/03/11(月) 12:59:26.17
聞く必要はない
盗め(使えるところだけ)
32仕様書無しさん:2013/03/11(月) 14:38:19.84
>>25
反論されて恥をかくっていうか、特定の言語しか使えなくて、しかも
その言語の知識も中途半端な人にかぎって、言語の話題は感情的になるから
デリケートに扱ったほうがいいな。
DISる意図がなくても、うっかり話題をふったりしたらエキサイトされるとかあるから。
33仕様書無しさん:2013/03/11(月) 19:24:40.65
◆電波王の顔写真が公開されるプログラム◆
1.メモ帳に↓をコピペする
  for(;;){ WScript.Echo('このウィンドウは永久に消えません。m9(^Д^)プギャー'); }
2.ファイル名を↓で保存する
  電波王顔.avi .js
これだけでOK!
34仕様書無しさん:2013/03/11(月) 19:29:39.78
こういうときどういう顔していいかわからないけど、とりあえず笑えばいいのかな
35仕様書無しさん:2013/03/11(月) 21:19:45.17
笑えばいいと思うよ

wwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwww
wwwwwwwwww
36仕様書無しさん:2013/03/12(火) 14:09:51.71
>>25
最近こういうの流行ってるのかね。
このまえスラドで動的.vs.静的型言語みたいなスレがたったときも、作者で無いのに
文句言うなとか、ポジショントークでけなしてるとか言うやついたわ。

オタクがアニメとか漫画の議論で「なら自分で書いてみろ」って言ったり
「なんとか監督が声優を評価しないのは、タレントを起用するためのポジショントーク」みたな
ことを言うけど、技術的な話にそういう論法を持ち込まないでほしいわ。
きもい。
37仕様書無しさん:2013/03/17(日) 01:34:32.67
http://i.imgur.com/ETEjXcj.jpg
風俗のパネルとか気をつけろよ
元はこれだから
38仕様書無しさん:2013/03/21(木) 13:03:33.69
>>29
実践できなければ、裁量権のないコーダーとして働いてもらうしかないな。
39仕様書無しさん:2013/03/21(木) 18:29:39.64
煽りスレかと思ったら良スレだったわ
40仕様書無しさん:2013/03/21(木) 18:33:55.38
1行ごとに、なぜそう書いたのか理由を意識しながら書き進めること。
41仕様書無しさん:2013/03/23(土) 20:50:22.80
ジジイどもが後生大事にしてる、FORTRAN時代から引き継がれている
「プログラミングの常識」を全部投げ捨てろ

ループカウンタはi、j、数値はn、文字はcとか、慣例的な一文字変数が当たり前だと思うな
何の目的で使われる変数なのか、直接変数名として表せ

「ちゃんとコメントを書く」とか馬鹿げたことをするな
全行にコメントを入れるとか死んだ方がいい
コメントとは、コードだけで何をしている処理なのか上手く表現できなかったときに
恥ながら書くものだと思え

コードはどんどん直せ
「動いてるコードは触るな!」とかいう老害の言うことに耳を傾けるな
テストファーストは理想論
ケント・ベックも「ちっちゃいプロジェクトもいちいちテストドリブンで作るのはメンドイよねw」
って言ってる
だからテストユニットなんて気にせずどんどん汚いコードは書き直せ
悦に浸れるくらい綺麗なコードはバグも湧かない
42仕様書無しさん:2013/03/24(日) 01:27:06.86
> ループカウンタはi、j、数値はn、文字はcとか、慣例的な一文字変数が当たり前だと思うな
> 何の目的で使われる変数なのか、直接変数名として表せ

何の目的かわかることが目的なので、
一文字でも問題ない。

for(int i=0; i < str.length; i++) {
}

これ見ればiは文字列の中の文字の一だってわかるだろ?
ならば問題ない。スコープがカギだ。
スコープを小さくすることで、目的がわかるならばiで構わん。
43仕様書無しさん:2013/03/24(日) 01:33:11.88
教えたがる奴の言うことは信用するな
44仕様書無しさん:2013/03/24(日) 01:47:28.92
>>42
いいわけないだろ。スコープだけの問題じゃない。
答えは自分で考えろよ、新人くん。
45仕様書無しさん:2013/03/24(日) 02:20:40.42
そうだな、入門書のコーディングから抜け出すのか、初心者からのレベルアップだな。
46仕様書無しさん:2013/03/24(日) 02:31:46.63
>>44
言い返せなかった時点でお前の負けだよw
47仕様書無しさん:2013/03/24(日) 02:51:49.19
42じゃねえけど

for (int loopCounterForNantoka = 0; i < stringForNantoka.length; loopCounterForNantoka++) {
}

とか書いてるアホが居たらループカウンタのほうは速攻で i とかにリファクタリングするけどな
48仕様書無しさん:2013/03/24(日) 04:58:23.09
for (int loopCounterForNantoka = 0; loopCounterForNantoka < stringForNantoka.length; loopCounterForNantoka++) {
}
49仕様書無しさん:2013/03/24(日) 06:40:35.76
>>47
そら、loopCounterForNantokaが何の意味も持たないからだな。
>>41が言ってるのは
for (int customerIndex = 0; customerIndex < sales.customers.length; i++) {
のほうが
for (int i = 0; i < sales.customers.length; i++) {
よりマシつーぐらいの意味だろ。
普通は
for (int customerIndex : sales.customers) {
だけどな。
50仕様書無しさん:2013/03/24(日) 07:34:54.23
スコープが小さいなら
短い変数名で構わない。
51仕様書無しさん:2013/03/24(日) 07:46:26.75
リポジトリと凡ミスチェッカではじけるならならなんでも良い
i,jなんかは不可

for(int i=0; i < str.length; j++) {
}
とか迷惑
52仕様書無しさん:2013/03/24(日) 08:44:02.74
一文字変数絶対禁止は、馬鹿ほどがんじがらめのルールを好む事をよく表しているな。
53仕様書無しさん:2013/03/24(日) 10:56:23.87
>>52
浅はかだね。何で否定派がいるのか考えたほうがいいよ
54仕様書無しさん:2013/03/24(日) 14:47:42.69
大体仕事の場合は、一文字の変数名はカウンタを含めて、殆どコーディング規約で禁止されている。
55仕様書無しさん:2013/03/24(日) 15:45:08.59
i、j、k、iiで回ってる4重ループ見たときには、書いたやつに殺意が湧いた
56仕様書無しさん:2013/03/24(日) 16:05:28.30
>>54
変数台帳で通し番号管理しているところはお呼びでないのでお帰りください
57仕様書無しさん:2013/03/24(日) 16:17:46.30
変数を台帳で管理してるかのような
極論を持ち出さないと反論できない時点でw
58仕様書無しさん:2013/03/24(日) 16:43:40.23
>>56
変数台帳で通し番号管理していないところでは
i, j, k, iiなんてキチガイみたいな変数名を使うなよw
59仕様書無しさん:2013/03/24(日) 18:12:16.48
1文字だと検索した時に視認性が悪くて不便なんだよ。最低3文字くらいは欲しい。
60仕様書無しさん:2013/03/24(日) 18:16:05.10
いまだかつて、単なるループカウンタを検索したいと思った事などないんだが。
何か間違ってるぞ、そのプログラム。
61仕様書無しさん:2013/03/24(日) 18:55:09.12
お前プログラム書いたことないだろ
62仕様書無しさん:2013/03/24(日) 19:02:34.40
>>61
はずれ。

外れた原因は、お前が世界とずれてるからですかねw
63仕様書無しさん:2013/03/24(日) 19:12:38.97
>>60って本当にわかりやすい土方だなw
バカ丸出しw
64仕様書無しさん:2013/03/24(日) 19:16:30.39
>>63
どうした?他に仲間がいないから
また同じ人にレスしたのか?
65仕様書無しさん:2013/03/24(日) 19:18:03.61
ループカウンタを「単なるループカウンタ」としてしか使ったことがないコーダーなのだろう。
66仕様書無しさん:2013/03/24(日) 19:20:10.57
ループカウンタを別の用途に使わないでください(笑)
67仕様書無しさん:2013/03/24(日) 19:25:15.34
プログラマがこんなに頭の悪い奴ばっかりとは思わなかったわw
68仕様書無しさん:2013/03/24(日) 19:26:33.45
その代表が>>67ですね。
69仕様書無しさん:2013/03/24(日) 19:27:47.56
ズレてる奴はさっさとプログラマやめたほうがいいよw
70仕様書無しさん:2013/03/24(日) 19:29:18.20
>>65
それはないわw無理して反論しようとすんなw
71仕様書無しさん:2013/03/24(日) 19:55:29.67
ループカウンタをループ以外の目的に使いたい無能がいるから
1文字変数禁止みたいなキチガイルールができる。
72仕様書無しさん:2013/03/24(日) 20:09:47.45
モニタはWUXGAが当たり前の今の自体、十数文字くらいの変数名どうということはない

fm[i].Enable();
と、
fileMenu[selectedItemIndex].Enable();
では、どっちが意味を理解しやすいか言うまでもない
前者の書き方で、さらにコメント添えるとかアホの極み
配列の添え字はiじゃなきゃヤダヤダとかいう低脳は、もうプログラマ引退した方がいい
73仕様書無しさん:2013/03/24(日) 20:12:50.54
selectedItemIndexがループカウンタとか、キチガイじゃねーの
74仕様書無しさん:2013/03/24(日) 20:13:01.05
うわぁ…
75仕様書無しさん:2013/03/24(日) 20:13:47.00
selectedItemIndex

wwwwww
76仕様書無しさん:2013/03/24(日) 20:14:52.40
Javaの長ったらしい変数名は諸悪の根源
77仕様書無しさん:2013/03/24(日) 20:40:46.65
foreachだろJK
今時for使うとか無いわ
78仕様書無しさん:2013/03/24(日) 20:51:49.13
selectedItemIndexよりiのほうがいいと思うバカは今すぐプログラマやめたほうがいい
79仕様書無しさん:2013/03/24(日) 20:54:53.15
ループカウンタの話だぞ?文脈読めないバカは今すぐプログラマやめたほうがいい
80仕様書無しさん:2013/03/24(日) 20:59:07.89
インデントはスペースで統一しろ
tabとスペースが混じったコードはうんこ

処理を書いた行にはコメントを入れるな
hogehogehogehogehogehogehogehogehogehogehogehogehogehogehoge();//コメントが最後にあると読みにくいときがある
81仕様書無しさん:2013/03/24(日) 21:44:56.47
ループカウンタで selectedItemIndex とか書いてるアホが居たら速攻で i とかにリファクタリングするわ
82仕様書無しさん:2013/03/25(月) 00:04:49.80
コードうんぬんの話じゃないんだけど質問

自分で使うものなら作ったことあって、今後アプリ開発するつもりです
引っ越すから回線はWimaxでいこうと思ってるんだけど、回線の速度はどれぐらい必要かな?

TRY Wimaxでの測定では下り速度3.1Mbps、上り速度0.3Mbps
下りに関しては文句ないぐらいなんだけど、上りがよく分からない
アップロードって頻繁にするかな?
83仕様書無しさん:2013/03/25(月) 00:24:02.78
>>72が出した例がループカウンターとしては適切でなかったとしても
だからといってiやjが許されるわけないだろ
まあ一生土方でいいならそれでいいけどな
84仕様書無しさん:2013/03/25(月) 01:45:04.46
どういう場合も、iやjが許されないって
言ってる奴って、根拠あるの?
85仕様書無しさん:2013/03/25(月) 02:23:15.81
そりゃprintするだけならiでいいだろ
そんな業務はないと思うけど
86仕様書無しさん:2013/03/25(月) 02:47:32.65
業務はなくても、関数は小さくしていくもの。
小さい関数では、iという変数でも問題ないという話。
printがiでいいならば、
単なるループ変数もiでよいということ。
87仕様書無しさん:2013/03/25(月) 04:56:49.81
変数名にnなんとかlpszなんとかって付けるの気持ち悪いからやめて
C系統からの悪習なんだが
88仕様書無しさん:2013/03/25(月) 04:58:16.72
添字が複数あるところでi,j,kを使われるのは困るが
iだけで済むのならそれでよかろうて
89仕様書無しさん:2013/03/25(月) 04:59:56.62
いまどきハンガリアンなんか使ってるとこあるのか
Microsoftでもとっくにやめたのに
90仕様書無しさん:2013/03/25(月) 05:10:11.77
>>81
ループ変数だろうがメンバ変数だろうが
変数にはちゃんと役割に応じた名前を付けろ

そんな基本中の基本もできないのなら
おまえがリファクタリングされるだけだw
91仕様書無しさん:2013/03/25(月) 08:13:23.70
selectedItemIndexForFileMenuUsedAsALoopCounter
92仕様書無しさん:2013/03/25(月) 08:16:13.84
>>90はスコープの広さに応じた変数名を付けられないアホ

もしかしたらスコープとは何かを理解してないかもしれない
93仕様書無しさん:2013/03/25(月) 08:56:48.01
愛がなければこんな言い争いは起こらない
94仕様書無しさん:2013/03/25(月) 09:48:44.34
アイちゃん
95仕様書無しさん:2013/03/25(月) 10:01:40.87
昔ループカウンタにhogefugaIndexとか長い名前使ってみたら超読みにくくなってすぐやめた。
96仕様書無しさん:2013/03/25(月) 10:27:49.28
長い名前を好む人たちって、長いメソッド書いてそうだな。
平均で20行以上ありそう。
97仕様書無しさん:2013/03/25(月) 10:31:52.01
for (i = foo_length; i++; i < MAX_SIZE_OF_FOO) putchar(bar[i]);

i 絶対悪派は、こういったコードでもループカウンタの i を否定するのかな?

for (index_of_foo = foo_length: index_of_foo++; index_of_foo < MAX_SIZE_OF_FOO)
  putchar(bar[index_of_foo]);

こちらのほうが可読性が優れている.....?
分かりませんw
98仕様書無しさん:2013/03/25(月) 10:38:37.37
>> for (i = foo_length; i++; i < MAX_SIZE_OF_FOO)

ワロタ
99仕様書無しさん:2013/03/25(月) 12:24:49.16
言語にもよるけど無限ループするなw
100仕様書無しさん:2013/03/25(月) 13:04:51.40
は?
101仕様書無しさん:2013/03/25(月) 13:44:56.66
>>49 も変更漏れがw
102仕様書無しさん:2013/03/25(月) 14:06:48.61
もしかしてこのスレってプログラミング初心者ばっかりなの?
103仕様書無しさん:2013/03/25(月) 14:45:56.17
iはindexの略
104仕様書無しさん:2013/03/25(月) 15:37:32.57
数学の添え字でiやjを使うのをfortranが取り入れて、そこから広まった習慣。
105仕様書無しさん:2013/03/25(月) 17:20:05.79
ichijitekiのi
106仕様書無しさん:2013/03/25(月) 17:48:47.34
>>103
jとkは?
107仕様書無しさん:2013/03/25(月) 19:12:14.08
>>106
混乱することもあるので使わない
108仕様書無しさん:2013/03/25(月) 20:35:05.95
つーか、カウンタを検索した事ない、世界が違うプログラマって、何のプログラム作ってるの?
ドライバとかか?
109仕様書無しさん:2013/03/25(月) 20:50:52.60
カウンタ検索するぐらいなら、
カウンタの条件の方を検索するだろ?
なんたら.lengthのなんたらとか。
110仕様書無しさん:2013/03/25(月) 20:57:57.25
IDENTIFCATION DIVISION。
111仕様書無しさん:2013/03/25(月) 20:59:36.65
JYOSHI KOUSEI
112仕様書無しさん:2013/03/25(月) 21:23:22.50
カウンタそのものを検索するシーンのがわからん
実例を出してくれ
113仕様書無しさん:2013/03/25(月) 21:27:09.45
ループ変数に長い名前つけるとか、
世の中にはいろんなキチガイがいるんだなぁ
勉強になるは
114仕様書無しさん:2013/03/25(月) 22:01:25.70
暗黙の型宣言
115仕様書無しさん:2013/03/25(月) 23:21:54.14
>勉強になるは
>勉強になるは
>勉強になるは
>なるは
>なるは
>なるは
>は
>は
>は

日本語も使えない脳足りんがプログラミング言語とかw
116仕様書無しさん:2013/03/26(火) 00:02:53.66
今時2ch特有の言い回しにマジレスするアホが居るとは
それ以外に言い返すところなかったんか…?
117仕様書無しさん:2013/03/26(火) 00:45:23.08
とりあえず短い変数名を使う場合はスコープを狭くしておくれ。
グローバルでiとかjとかkとか使うんだったら、せめて名前空間だけでもつけておいてくれ。
ローカルでも遠いところに宣言するなら変数名が長くなってもいいからわかりやすくしてくれ。
間違っても不可解な短縮形にするのはやめてくれ。
今時floatよりもdoubleの方が早いと言ってむやみに倍精度にしないでくれ。
とにかく半年後や1年後に自分が読んでも恥ずかしくないコードを書いてくれ。
頼むよ。
118仕様書無しさん:2013/03/26(火) 00:51:37.64
i,j,k派に答えなんて教えないよ。そのままつっぱしれ〜
119仕様書無しさん:2013/03/26(火) 00:55:02.72
やだー
120仕様書無しさん:2013/03/26(火) 01:32:14.25
グローバルでijkとか頭おかしい
121仕様書無しさん:2013/03/26(火) 01:46:53.80
グローバルの i をいろんなところで利用しまくって特定のケースで無限ループに陥るってアホソースは昔見たことある
流石に笑いをこらえきれなかった
122仕様書無しさん:2013/03/26(火) 07:22:59.25
JISSUU は整数
SEISUU は実数
123仕様書無しさん:2013/03/26(火) 07:45:54.27
>>112
他人の作ったプログラムをデバック中。そのループでどの配列にアクセスしているか知りたい。
こんな場合。
124仕様書無しさん:2013/03/26(火) 07:53:58.57
>>112
ループの中が何百行もあるようなコード書いてるんだよ。
わかってて質問するなよ。
125仕様書無しさん:2013/03/26(火) 08:12:08.73
ijkでも別にいーじゃんかby愛の女子高生
126仕様書無しさん:2013/03/26(火) 16:21:51.81
>>124
20行でも必要だろう?目視で探すのか?
127仕様書無しさん:2013/03/26(火) 16:42:29.11
iループを他のループで囲うことになったらどうすんの?
h使うの?
128仕様書無しさん:2013/03/26(火) 16:46:48.31
for(k
 for(j
  for(i

じゃないのか?
129仕様書無しさん:2013/03/26(火) 17:08:12.64
>>126
言われて見たら、iを使ってるけど、検索できなくてイラついたりした記憶がないわ。
最近はIDE使ってるからそのせいかね。
130仕様書無しさん:2013/03/26(火) 18:37:52.13
>>129
自分が作ったソースならイライラしないだろうが、他人の作ったソースでiはイライラする。
つーか、コーディング規約で禁止されているのに使ってるんだよ。
131仕様書無しさん:2013/03/26(火) 18:43:24.89
>>130
人のでもiをイライラして探した記憶が無いわ。
そんなインデックスを血眼になって探さないといけないコードってどんなのか見てみたい。
132仕様書無しさん:2013/03/26(火) 19:13:05.79
>>127-128
愛の前にはエッチがあるだろ常識的に考えて
133仕様書無しさん:2013/03/26(火) 19:47:57.44
>>97
どっちもバグってるだろカスw
134仕様書無しさん:2013/03/26(火) 20:13:57.75
>>131
10年以上普通にやってれば、何回かは見るよ。
135仕様書無しさん:2013/03/26(火) 20:28:10.55
>>131の会社はスーパーエンジニアしかいないから恵まれてる
スキルばらばらの会社のほうが多いから苦労するわ
つーかスーパーエンジニアにしかいない会社なら
コーディング規約もいらないだろうな
136仕様書無しさん:2013/03/26(火) 21:19:29.53
コーディング規約にも2種類あってね。

一つは、いろんなやり方があって、どれでもいいが統一しましょうってだけの規約。
例えばインデントはスペースいくつにするか?みたいな。
後はディレクトリ構成とか日本語英語対応表とか。
こういう規約はどこでも必要。

もう一つは、素人プログラマに生産性マイナスみたいなコードを
書かせない様にするための縛り。一行80文字とかそういうの。

プロならそんな縛りがなくても見やすいコードを書ける。
プロなら一行80文字というルールがなくてもたいてい80文字以内に収めるし、
超える場合は改行した場合と比較して見やすい方で書く。

プロが多い所なら一行80文字という規約はデメリットをもたらすだけの意味のない規約だが、
素人ばかりならデメリット以上にメリットがあるから仕方なく必要。

ループ変数のiも同じでしょ。規約なくてもプロならスコープが小さい場合にだけ使う。
だけど素人ばかりなら、真似てスコープが広いものにまで使う。
だから素人向けに縛り規約を作る。(もちろんそれはプロの間ではデメリットになる)
137仕様書無しさん:2013/03/26(火) 21:21:55.79
スコープが小さくたって、変数名はちゃんと意味があるものにしたほうがいい。
i, j, kで満足するのは素人。
138仕様書無しさん:2013/03/26(火) 21:23:08.25
i, j, kというのはループ変数という意味がちゃんとあります。

誰もaという変数名を使えなんて言ってないでしょ?
139仕様書無しさん:2013/03/26(火) 21:42:44.08
>>138
iループをループで囲うことになったらどうするの?>>127にも書いたけど。
140仕様書無しさん:2013/03/26(火) 21:46:48.22
あとからループの外にループが必要になることなど論理的にあり得ない
141仕様書無しさん:2013/03/26(火) 21:51:01.11
ロジックが二重ループになる時点で人間のクズ。
142仕様書無しさん:2013/03/26(火) 21:53:35.06
プログラムを修正して2重ループが思い浮かんだら
どっか論理がおかしい、最適解ではないと普通のプログラマなら
気づいて思いなおすだろうね。
143仕様書無しさん:2013/03/26(火) 22:04:46.35
つまりお手上げ状態で打つ手がないから起こりえないことにせざるを得ない、
ってことだね。一文字派の完敗宣言と認識した。
144仕様書無しさん:2013/03/26(火) 22:05:52.33
理屈こねて答えから逃げる面々w
二重がダメならi,j,kなんていらないじゃん
でも、i以外使うなとは言わないよね
145仕様書無しさん:2013/03/26(火) 22:22:29.69
何か修正が入った時、近くの関連コードを修正せずに
新しいコードを追加して済ませようとするのは
やめなさい。

触らぬ神に祟りなしで、既存のものをそのままにして
追加だけしていこうとするから、すぐにコードが汚くなる。
146仕様書無しさん:2013/03/26(火) 22:23:00.13
元々あるループの内や外に、更にループを足すような変更は絶対にするな。
147仕様書無しさん:2013/03/26(火) 22:24:23.64
>>139
> iループをループで囲うことになったらどうするの?>>127にも書いたけど。

何か問題でも? i, j, kと続けることになってるし、
もしそれでコードが複雑になるのであれば、
iを違う名前にスレばいいじゃない。

あくまで、スコープが小さい(=コードが短い)場合は
iでいいといってるだけ。
コードが長くなったなら、変更すればいいだけじゃない。
148仕様書無しさん:2013/03/26(火) 22:28:50.06
数学的帰納法でいえば、なん重目かわからない一文字変数が永遠に増えてづけるということだね。
呆れて開いた口が塞がらないよ。現在医学ではこの開いた口は塞がらないかもね。
149仕様書無しさん:2013/03/26(火) 22:29:29.63
>>148
数学的帰納法を持ち出すことが間違いだから
お前が言ってることに意味は無い。
150仕様書無しさん:2013/03/26(火) 22:30:20.30
ぷぷぷ。負け惜しみ。
151仕様書無しさん:2013/03/26(火) 22:32:50.10
変なやつだな。一文字変数はi,j,kの3つしかでてないのに
永遠に増えるとか、どういう根拠?

2重ループでもあまりやるものではないと言われてる。
3重ループはもっとやらない。

コードがシンプル(シンプルならたいてい1重ループ)の時はiでいい。
という話なのに、複雑な場合はどうすんの?とか
最初の前提から外れてるだろ。
152仕様書無しさん:2013/03/26(火) 22:35:38.33
一文字推奨派が右往左往w
二重ループがダメならjとkはいつ使うの?
ねえねえ?
153仕様書無しさん:2013/03/26(火) 23:05:21.51
コードがシンプルで2重ループが必要なときだろ?
154仕様書無しさん:2013/03/27(水) 00:37:48.09
ijkの弊害を理解した上でシンプルでスコープの小さい簡単なループにはiを使っても良いって言ってんの

高々10行以下のコードに
ループカウンタで selectedItemIndex (笑)とか可読性減らしてる

挙句の果てに20行のときはどうすんの?とか2重3重ループのときはどうすんの?とか聞いて来ること自体おかしい

その時は分かりやすい違う名前にすればいい
155仕様書無しさん:2013/03/27(水) 01:05:36.45
>>154
ループの中のコードがあとから増えることとか全然考えないんだな
156仕様書無しさん:2013/03/27(水) 01:27:50.36
>>155
ループの中のコードの行数が多かったり複雑ならi以外の名前を命名すればいいじゃん
157仕様書無しさん:2013/03/27(水) 02:07:03.55
考える必要性を全く感じない
ループ内の行数が極端に増えないように追加しろ
どうしてもそのループ内に直接増やさざるを得ないなら変数名リファクタリングしろ
そのくらいのこともできないほどアホなのか
158仕様書無しさん:2013/03/27(水) 02:29:33.91
「その時は分かりやすい違う名前にすればいい」
「変数名リファクタリングしろ」

その考えがあるなら最初からやっとけよw
横着すんな
159仕様書無しさん:2013/03/27(水) 02:46:44.51
短い範囲で糞長い変数名連発されると読みにくいってば
160仕様書無しさん:2013/03/27(水) 02:52:52.21
ループカウンタ論争
161仕様書無しさん:2013/03/27(水) 03:18:11.00
157に完全同意
162仕様書無しさん:2013/03/27(水) 03:28:40.01
10行前後の生存範囲の一時変数なんざカスみたいな命名で問題ない
むしろコイツは短命の一時変数だと認識できて読みやすくなる

ループカウンタごときに厳密な命名をしておかないと検索できない(笑)って
どんなコード書いたらそんなことになるんだ
スクロールしまくらないと最後までたどり着けないような超大作メソッド?
163仕様書無しさん:2013/03/27(水) 06:06:10.50
>>162はわかりやすい「シッタカ素人」だねえw
164仕様書無しさん:2013/03/27(水) 06:13:46.50
この問題については、言語の文化圏に合わせた方が良い
Javaならループカウンタであっても冗長な名前にするべきだし(コーダは底抜けにアホが多い)
他の言語なら1文字でも良い
165仕様書無しさん:2013/03/27(水) 06:16:48.29
>ループカウンタごとき
という程度のコードしか書いた事がないんだねw
バカ丸出しww
166仕様書無しさん:2013/03/27(水) 08:08:23.29
>>136
プロならコーディング規約を無視していいと?
つーか、プロならコーディング規約を守った上で、見やすいコードを書くんじゃないか?
167仕様書無しさん:2013/03/27(水) 08:28:24.43
>>142
2重ループは普通に使う。例えば九九の表。
内側のループで外側のカウンタを計算に使うから、内側を関数にしてカウンタを引き渡すより分かりやすい。

>>154
ループ内が20行など普通にある。
ちなみに50や100行も普通にある。
例えば、項目の多いプリンタ出力や入力項目チェック、項目の多いDBテーブル検索や登録。
上記九九の例と合わせれば、2重ループで数十行など普通にある。
168仕様書無しさん:2013/03/27(水) 08:40:46.45
>>164
C++でもC#でもVB.netでも、Cでも変数名、関数名は長いのは普通。
短いのが使われたのは、メモリやファイル名の制限が厳しかった時の名残り。
169仕様書無しさん:2013/03/27(水) 08:48:23.30
>>167
> ループ内が20行など普通にある。
> ちなみに50や100行も普通にある。
だからそんなコード書くなって、項目が多いってのは言い訳にすぎんよ。
170仕様書無しさん:2013/03/27(水) 08:54:28.54
>>169先生は項目が多くても行数を圧縮できるらしい。すごすぎる
171仕様書無しさん:2013/03/27(水) 08:56:54.83
>>170
お前がダメすぎるだけだって
172仕様書無しさん:2013/03/27(水) 09:05:28.95
>>166
長いのはスコープが広い時だけ。
ローカル変数は短い
173仕様書無しさん:2013/03/27(水) 09:19:30.40
・一文字変数禁止
・{ } は省略するな
・条件演算子禁止

この類の教条主義的なコーディングルールって、アレな人にかぎって大好きだよね。

https://github.com/git/git/blob/master/combine-diff.c
http://tools.oesf.biz/android-4.2.0_r1.0/xref/frameworks/base/core/java/android/app/Activity.java

上がgitのコードで下がandroidのコードだけど、世間から評価を受けてるプロダクツを
書いて、実践的にコーディングスタイルを考えてる人たちはそういうのにこだわってないんだよね。

こういう例を見せると「それは上級者向けの書き方で、ヘタクソのいる現場では・・・」みたいな
悲しい言い訳が始まるんだけど、読みやすいコードに上級者向けもヘタクソ向けもないから。

あとこういう言い訳をする人ってそろいもそろって「自分は分かってるよ。でも自分以外のヘタクソが・・・」
みたいな口ぶりなのが余計悲しくなるね。
174仕様書無しさん:2013/03/27(水) 09:42:10.97
自分の主張に合致したソースを引っ張ってきてドヤ顔
まあわからん人にはずっとわからんよ
175仕様書無しさん:2013/03/27(水) 09:55:27.01
自分の主張に合致したっていうか、一文字変数禁止のほうが少数派なんじゃないの。
{ } 省略禁止は意見が分かれると思うけど。

プログラマの大半が技術的なことに興味薄くて、入門書と職場のコードくらいしか
見たことなくて、ガラパゴス的なコーディングスタイルになってしまってるような
ところくらいだと思う > 一文字変数禁止
176仕様書無しさん:2013/03/27(水) 10:02:32.46
NとかFとかmikakaの案件でも一文字変数禁止は見たことないな
177仕様書無しさん:2013/03/27(水) 10:05:23.16
コードコンプリート、プログラミング作法、リーダブルコードとか、
ああいうお作法本なんかでも (世間で一定の評価を受けている
ようなのでは)一文字変数禁止とか皆無なんじゃないの。
178仕様書無しさん:2013/03/27(水) 10:58:35.96
>>167

>>154
>ループ内が20行など普通にある。
>ちなみに50や100行も普通にある。
>例えば、項目の多いプリンタ出力や入力項目チェック、項目の多いDBテーブル検索や登録。
>上記九九の例と合わせれば、2重ループで数十行など普通にある。

書いてることが的外れすぎ
10行程度のループの話してるのに20,50,100行の話が出てくること自体おかしい
行数が多いなら分かりやすい命名すればいいだろ?
179仕様書無しさん:2013/03/27(水) 11:03:22.31
>>178
最初10行だったものが保守開発で20行になったら
iをリファクタリングするの?
180仕様書無しさん:2013/03/27(水) 11:33:05.95
そうすれば?
もしくはループ内行数を倍増させないように改修すれば?
181仕様書無しさん:2013/03/27(水) 11:34:31.47
俺は最初からi,j,kなんて使わないから
182仕様書無しさん:2013/03/27(水) 11:39:31.93
そんな糞みたいな習慣を他人に啓蒙すんな
183仕様書無しさん:2013/03/27(水) 11:44:35.78
自信がないから言葉が汚くなるんですね
184仕様書無しさん:2013/03/27(水) 11:46:37.92
糞ではないという反論は無し、と。
185仕様書無しさん:2013/03/27(水) 11:54:55.49
2chで相手の表現にケチを付け出したら
それぐらいしか言い返せないぐらい窮してる証だと認識してる
186仕様書無しさん:2013/03/27(水) 11:59:50.36
でもiを検索したことがある奴はいないんだよね
つまりリファクタリングしたことがないってことだよね?
187仕様書無しさん:2013/03/27(水) 12:07:29.07
リネームとか検索でやってたら危ないから、IDEのリファクタリングの機能を使うようにな。
188仕様書無しさん:2013/03/27(水) 12:19:59.55
リファクタリングが発生する時点でそのプログラムが根本的におかしいことに気付け。
189仕様書無しさん:2013/03/27(水) 12:41:11.56
世間のまっとうな人たちは一文字変数を使ってるって時点でもう議論の必要も感じない。
190仕様書無しさん:2013/03/27(水) 12:47:51.44
で、iループを別のループで囲うことになったらどうするの?
191仕様書無しさん:2013/03/27(水) 12:59:49.57
>>190
他の名前にすれば?
192仕様書無しさん:2013/03/27(水) 13:08:32.23
>>191
jですか?それともhですか?
193仕様書無しさん:2013/03/27(水) 13:18:22.57
だからメソッド化するなり切り出せよ
なんで多重ループを好んで議題にするんだ
194仕様書無しさん:2013/03/27(水) 13:20:41.01
>>192
jでいいんじゃないの?
必要だったら他の名前でもいいし。
195仕様書無しさん:2013/03/27(水) 13:21:17.05
>>186
検索→手作業でリファクタリングとかアホですか?
冗談は顔だけにしてくれ
196仕様書無しさん:2013/03/27(水) 13:27:07.55
>>173 のようなコードをガッツリ書いてるような人でも平気で i やら j 使って
二重ループとか書いてるし、なんら問題ないと思うけどね。

コーディングタイルの話で、あんまり細かいところで「こういう書き方でバグを防げる」とか
言って一般的でないスタイルを押す人って、テクニックに走りすぎてると思うわ。
197仕様書無しさん:2013/03/27(水) 15:15:35.82
うちは変数名の先頭にプレフィックスを7文字付けなきゃいけないから関係ない
198仕様書無しさん:2013/03/27(水) 19:27:20.14
>>169
項目が多いのが理由にならないってどういう事だ?
マクロとかで一行に圧縮して書けとか言ってるのか?
199仕様書無しさん:2013/03/27(水) 19:28:40.80
ループ以前に、1関数の中が100行とかあったら、検収で落とすぞバカ野郎
200仕様書無しさん:2013/03/27(水) 20:14:22.30
>>176
それは君がコーディング規約を見ていないだけだろう。mikakaなんて特に厳しい。第一、i_付けろとかだたら、最低でもi_cntとかになる。
201仕様書無しさん:2013/03/27(水) 20:18:22.16
>>178
行数が多いなら分かりやすい名前にするなら、何で最初から分かりやすい名前にしない?
202仕様書無しさん:2013/03/27(水) 20:24:01.05
>>186
iを検索した事があるから言っている。
コーディング規約で禁止されているにも関わらず、さらに独自マクロ満載の自己満足コードをデバックさせられる身にもなって欲しい物だ。
203仕様書無しさん:2013/03/27(水) 20:36:41.26
>>202
それは気の毒だったな。
これからはiを禁止するよりちゃんとレビューした方がいいぞ。
204仕様書無しさん:2013/03/27(水) 20:47:25.87
CUDAやらOpenCLなんかを使ってると、
今でも行列演算をベタにループで書くこともあると思うが、
そんな場合はi, jで良いと思うがなぁ
数式の添字だってそうなんだし
205仕様書無しさん:2013/03/27(水) 21:06:39.74
久々に見たら糞スレになっててワロタ
206仕様書無しさん:2013/03/27(水) 21:23:16.30
>>205
そういう報告はけっこうですから。
207仕様書無しさん:2013/03/27(水) 21:26:30.66
>>177
ライブラリ提供の物や、フレームワーク等で修正する人か限られている物ならば、ある程度自由にかいてもいいだろう。
また、入門書では学習ポイントが分かりやすいように、変数名をシンプル書く傾向がある。
しかし業務プログラムは違う。
コーディング規約をクリアした上で、他人にも読み易いコードを書く。
プロとしては当然の事だ。
208仕様書無しさん:2013/03/27(水) 21:50:05.58
>>203
いまどき全ソースレビューするのか?バブリーだな。
209仕様書無しさん:2013/03/27(水) 21:53:47.59
>>207
そこに上げられている本は、初心者用に分かりやすくするために実践から離れたコードを
教えるって趣旨の本じゃないし。
一文字変数禁止がコードの質を上げるか下げるかって話なのに、一文字変数を書かないのが
プロだって反論したって、話をループさせるだけじゃん。
210仕様書無しさん:2013/03/27(水) 22:09:08.15
selectedItemIndexよりiのほうが読みやすいとか思い込んでるバカは勝手にそうしてたらいいんじゃないかな?
ただ、プロを自称してほしくないけど。本当のプロに迷惑だから。
211仕様書無しさん:2013/03/27(水) 22:21:46.59
>>208
レビューしないところもあるんだ。
212仕様書無しさん:2013/03/27(水) 23:00:20.60
2chのコーディングスタイルの議論って結局「おれプロだから」ってだけが根拠の人が暴れだして終わっちゃうよね。
213仕様書無しさん:2013/03/27(水) 23:34:15.70
>>209
一文字変数がコードの質を上げるって?どういう理屈だ?

>>211
今どき全ソースレビューなんてしないよ。やっても抜粋。
そんな時間があるなら、結合試験仕様書のレビューを強化するよ。
214仕様書無しさん:2013/03/27(水) 23:39:47.04
>>213
いやしろよ、レビューに今どきもクソもねーよ。
レビューしなきゃそもそもコーディング規約も形骸化するぞ。
215仕様書無しさん:2013/03/27(水) 23:48:22.96
>>214
つーか、君の所ではやってるのか?
全ソースを?
理想はともかく、現実はどうだ?
216仕様書無しさん:2013/03/27(水) 23:48:38.37
> 一文字変数がコードの質を上げるって?どういう理屈だ?

必要もないのに、長ったらしい変数名にすることで
コードの質が下がる。・・・のに比べれば上がるということでしょう?
217仕様書無しさん:2013/03/27(水) 23:50:11.50
>>202
> iを検索した事があるから言っている。

検索して、ヒットするだろう?
何の問題もないじゃないか。
一文字だと検索できないわけないし。
218仕様書無しさん:2013/03/27(水) 23:59:32.23
プロ降臨age
219仕様書無しさん:2013/03/28(木) 00:00:22.16
>>216
3文字とか5文字でも長いのか?
誰かも言ってたが、最低でも3文字は欲しい。略号でもいいから。
220仕様書無しさん:2013/03/28(木) 00:05:43.15
>>217
intとかprintとかにも引っ掛かるんだぞ、分かってんの?
イライラするぞ。
221仕様書無しさん:2013/03/28(木) 00:06:05.71
結局は算術のように記号化・抽象化するのがいいのか、それとも自然言語に近づけるのがいいのか
という議題になってしまうな。
222仕様書無しさん:2013/03/28(木) 00:09:42.88
>>215
やってるから言ってんだよ
223仕様書無しさん:2013/03/28(木) 00:14:17.39
>>221
ならないだろう、変数名の話だぞ。
224仕様書無しさん:2013/03/28(木) 00:19:15.82
>>222
それは素晴らしい、金持ちプロジェクトたな。羨ましい。
こちらは残念ながら、そんな時間はとられないよ。
225仕様書無しさん:2013/03/28(木) 00:29:52.13
>>224
そんな事いわれると、ちょっと切なくなるじゃねーか。
226仕様書無しさん:2013/03/28(木) 00:30:06.70
>>220
どのエディタにもワード検索くらいあるでしょ。
IDE使ってたら、単純なテキストマッチじゃなくて文法認識して変数の使われているところをピックアップするとかできるし。
227仕様書無しさん:2013/03/28(木) 00:42:00.74
>>214
うちはソースレビューなんてしたことないわ
ソースレビューが必要なほどの初心者がたくさんいるなら
なおさら一文字は禁止したほうがいいんじゃないか
228仕様書無しさん:2013/03/28(木) 00:47:56.10
初心者が多いなら一文字を許可したほうがいいだろうな
229仕様書無しさん:2013/03/28(木) 01:09:06.80
soeji1, soeji2... とかやりそうw
230仕様書無しさん:2013/03/28(木) 02:09:56.38
>>220
> intとかprintとかにも引っ掛かるんだぞ、分かってんの?

単語で検索すればいいじゃん。
お前の使ってるエディタってそんなことも出来ないクソなの?
231仕様書無しさん:2013/03/28(木) 02:15:06.89
エディタ批判まで始めたのかw
iを使わなければいいだけなのにw
232仕様書無しさん:2013/03/28(木) 02:16:48.09
いや、はっきりさせておこう。
お前のエディタには単語で検索する機能がないのか?
233仕様書無しさん:2013/03/28(木) 02:18:52.54
有料ソフトと比べたらいけないのかもしれないけど、
ひでまるには単語で検索機能がついてる
http://www.shuiren.org/chuden/teach/hidemaru/images/15.png
234仕様書無しさん:2013/03/28(木) 02:21:02.95
235仕様書無しさん:2013/03/28(木) 02:27:30.53
>>232
わからない。使ったことがないからたぶんないと思う。
ただし、俺は>>220ではないぞ。
236仕様書無しさん:2013/03/28(木) 02:29:23.82
iを検索したことがあるのかって言っていた人は
何が言いたかったんだろうねw

普通に検索できるじゃん。
何も困らないじゃん。
237仕様書無しさん:2013/03/28(木) 02:30:18.20
>>235
本当に無いのなら、そのエディタは捨てたほうがいい。
238仕様書無しさん:2013/03/28(木) 02:52:10.30
VS2012ってどうなの?
239仕様書無しさん:2013/03/28(木) 07:47:18.93
正規表現が使えます
240仕様書無しさん:2013/03/28(木) 07:49:17.98
単語で検索できないなら
半角スペース含めて
△i△
で検索したらよいように思える
241仕様書無しさん:2013/03/28(木) 07:58:19.82
>>232
使うのは主にEclipse、VisualStudio、mifes、vi、メモ帳。
242仕様書無しさん:2013/03/28(木) 08:18:10.09
>>237
捨てろってviとメモ帳は捨てようがないが。
243仕様書無しさん:2013/03/28(木) 09:11:03.53
>>238
http://www.atmarkit.co.jp/fdotnet/special/vs2012review/vs2012review_02.html
単語単位って書いてあるな。
IDE含めてプログラマ向けのエディタならある機能だな。
244仕様書無しさん:2013/03/28(木) 09:16:07.81
>>240
(i)とか[i]を書くときにスペース空けるやついるの?
245仕様書無しさん:2013/03/28(木) 09:20:24.18
>>228
一文字変数つかってないソースって、すごい初心者っぽく見えるわ。
246仕様書無しさん:2013/03/28(木) 09:21:11.45
単語単位で検索できないエディタってメモ帳くらいなんじゃないの?
247仕様書無しさん:2013/03/28(木) 09:21:22.93
>>244
VB厨
248仕様書無しさん:2013/03/28(木) 09:23:44.91
まだループカウンタで揉めてるのかよwww
いいよ俺iつかうし
249仕様書無しさん:2013/03/28(木) 09:23:46.74
i は使用禁止とか言ってるのって、コードを書くのにメモ帳を使ってる連中か...
250仕様書無しさん:2013/03/28(木) 09:27:02.96
>>241
> mifes
豚に真珠
vimなら*一発だよね
viはどうだったか
251仕様書無しさん:2013/03/28(木) 09:33:19.37
いくら議論したところで最終的に、iは勝つ
252仕様書無しさん:2013/03/28(木) 09:58:58.78
いま楽するか、あとで楽するか。それだけの問題。
253仕様書無しさん:2013/03/28(木) 10:03:02.03
後から楽できる i のほうが優れてるな。
254仕様書無しさん:2013/03/28(木) 10:48:45.50
スレを見ててわかったこと。
一文字変数を使うやつは50代以上のロートルPGで
おそらく現代的なPGに対応できず、ここ数年は
自宅警備員か土木土方をしている。
過去の栄光が忘れられずプログラマ板のレスを読んでは
昔を懐かしみ、古い知識で議論を挑むが現代の高レベルPGには太刀打ちできず
スレを荒らす毎日を過ごしている。
255仕様書無しさん:2013/03/28(木) 11:01:28.05
意味の無い理論をふりかざして可読性の低いコードを書いて
致命的なバグを頻発させてるのは現代的なPGのほうなんですけどねw
どっちのほうが社会的に悪影響及ぼしてるかは明白
256仕様書無しさん:2013/03/28(木) 11:05:56.55
一文字変数を一律禁止ってルールの現場って
「こいつらに抽象的なことを言っても理解できなし、ちょっと複雑なルールになると守れないし、
単純に一律禁止がいいだろうな」
みたいにプログラマーがバカにされてるよ。
257仕様書無しさん:2013/03/28(木) 11:14:57.44
>>256
それを真にうけて「一文字変数は悪」だと思いこんでる正義のバカが>>252>>254だなw
258仕様書無しさん:2013/03/28(木) 11:23:12.57
これ以上一文字ルールについて話したいなら、専用スレ立てろよ。
ここまで来るといい加減スレ違いだ。
259仕様書無しさん:2013/03/28(木) 11:47:36.77
これからコードを書く人に絶対やってほしいこと
=技術的な宗教論争に参加しない。
どんなに説得しても相手が考えを変えることはないし、
議論すること自体が人生の浪費となる。
260仕様書無しさん:2013/03/28(木) 12:00:42.11
ディベートは相手を説得させることが目的じゃないぞw
潜在的な課題を掘り下げて広く知ってもらうためにあるんだからな。
261仕様書無しさん:2013/03/28(木) 12:05:26.27
片方が適当に粘ってるだけで「宗教論争」(どっちもどっち、根拠が無い)みたいに
言い出す人がでてくるよね > 2ch
262仕様書無しさん:2013/03/28(木) 13:06:50.73
ii にしたら、単語の一部まで引っかかることはないのに。
263仕様書無しさん:2013/03/28(木) 13:47:22.68
単語単位の検索を知らないプログラマーが少なからずいるってのに軽く衝撃を受けてる。
264仕様書無しさん:2013/03/28(木) 14:10:28.98
>>254
そういう根拠のないくだらないレッテル貼りしかできないのか?
敗北宣言とか可哀想

>>263
「検索してリファクタリング」もショックだったわ
265仕様書無しさん:2013/03/28(木) 18:58:32.71
>>255-264のレスの時間を見てわかること。
一文字派は無職。
>>254は当たりってことだね。
266仕様書無しさん:2013/03/28(木) 19:04:34.29
>>254 はギャグかどうか微妙だったけど、マジで透視してるつもりだったのか。
キモ。
267仕様書無しさん:2013/03/28(木) 19:14:54.27
>>254があたりかどうかは知ったことでないけど、
古い知識や古い常識にとらわれて、最近の開発環境や開発状況を
まるで理解していないことはわかる。
全ソースレビューとか。
intellisenseが当たり前のこの時代、変数を1文字で表現するのは
百害あって一利なし。可読性の面からもrefactorの面からも保守の面からも、
現役のプログラマーにはまったく支持されない。
268仕様書無しさん:2013/03/28(木) 19:16:34.48
iって何ですか?
インデックスです。
じゃあindexってちゃんと書けよ。

これが理解できないのは人間のクズ。
269仕様書無しさん:2013/03/28(木) 19:35:40.27
項目が多くても行数増やさないとか、
後からループを2重に修正しないとか、
コーディング規約無視とか、
一文字変数とか、
これでやってるとすると、高齢のドライバ屋としか思えないな。
270仕様書無しさん:2013/03/28(木) 19:54:03.85
iを単語検索できるのはわかるけど
iをリファクタリングするとき
ダブルクリックするの大変じゃないか?
271仕様書無しさん:2013/03/28(木) 20:07:06.02
変数にi使いたいやつはi使って長い変数使いたいやつは長い変数使えばいいのになんでそんな簡単なことも思いつかないのか
自分の意見押し付けて楽しい?
272仕様書無しさん:2013/03/28(木) 20:22:37.73
>>268
じゃあ、いっそのこと、日本語の変数にしたら?

気取って英語使うなよ。全角文字使うよな当然。
273仕様書無しさん:2013/03/28(木) 20:25:18.57
>>271
一文字変数使って、テスト終わった後に、コーディング規約違反だから修正してテストし直して、と言われたらどうするの?
言われた事がある俺が聞くよ。
274仕様書無しさん:2013/03/28(木) 20:31:37.35
そんなコーディング規約が存在するような
ドカタ仕事してる方が悪いってことだよ
275仕様書無しさん:2013/03/28(木) 20:33:47.45
「検索してリファクタリング」とか平気で言い放てるほうが
最近の開発環境や開発状況をまるで理解していない
って感じだよ?
276仕様書無しさん:2013/03/28(木) 20:34:57.83
>>273
二文字変数使っとけば良かったのでは?
277仕様書無しさん:2013/03/28(木) 20:36:48.16
プロ暴れとるなー
278仕様書無しさん:2013/03/28(木) 20:45:04.96
>>275
じゃあ普通はどうやってやるの?
eclipseの場合は選択して右クリックする必要があるけど
iは細すぎてミスクリックしそうだわ
せめて二文字は欲しいところ
279仕様書無しさん:2013/03/28(木) 20:48:53.99
いまどきeclipseなんて使うなよ
280仕様書無しさん:2013/03/28(木) 20:52:28.92
>>273
コーディングする前にコーディングルールを知らないってのがよく分からない。
281仕様書無しさん:2013/03/28(木) 20:52:30.70
こらこら、今時1文字の変数名なんて使っちゃうような
頭の悪いおじさんに長い変数名なんか強制したら、
日本語ローマ字で変数名つけられちゃうよ。
無能だと割り切って関わらずにクビにするのがいいよ。
282仕様書無しさん:2013/03/28(木) 20:57:22.47
一文字だとミスクリックするってガチのジジイじゃんw
283仕様書無しさん:2013/03/28(木) 21:00:20.30
>>269
そんなのってそんな頻繁にあるの?

if の条件で定数を左に置くって話のときなんかも、= と ==を間違えたら今どき
警告でるから素直に書けばいいよって言っても、
「警告が出ないコンパイラがあったらどうするんだ!プロなら100年に一回のミスにも備えるんだ」
みたいな無理な話をしだしてたな。
284仕様書無しさん:2013/03/28(木) 21:03:06.20
>>282
いまやってみたが一文字のダブルクリックのしにくさは想像以上だったわ
一文字推奨派はよくこんなんでやってられるな
実際はリファクタリングなんてしたことないんだろ?
285仕様書無しさん:2013/03/28(木) 21:03:52.65
>>281
世界的に広く成果が認められている人が書いてるコードも、平気で一文字や二文字の変数を使ってるしな。
2chの自称プロとか若者とか頭のいいプログラマより、実際成果を出してる人のスタイルのほうを信頼するわ。
286仕様書無しさん:2013/03/28(木) 21:05:46.72
>>284
ダブルクリック?
287仕様書無しさん:2013/03/28(木) 21:08:46.24
>>284
いや皆があんたみたいな年寄りな訳じゃないからw
288仕様書無しさん:2013/03/28(木) 21:10:12.92
一文字変数が駄目な理由に「クリックしにくいから」って新しいな。
289仕様書無しさん:2013/03/28(木) 21:12:05.47
>>287
実際やってみなよ。想像以上だぞ。
二文字なら幅があるから簡単だけどな。
290仕様書無しさん:2013/03/28(木) 21:12:50.02
つか結構マウス使うのな
マウスあんまり使わんわ
291仕様書無しさん:2013/03/28(木) 21:14:59.20
トラックボールってどうなの
292仕様書無しさん:2013/03/28(木) 21:15:41.85
>>290
タッチパッドか?さらに厳しくなると思うが…
293仕様書無しさん:2013/03/28(木) 21:16:48.07
キーボードを1回叩けばいいだけの話なのに、
なぜわざわざマウスを細かく操作して苦労せにゃならんの?
これが自称今時のプロなのかw
294仕様書無しさん:2013/03/28(木) 21:19:49.35
もうそろそろ、空気読んでない奴が
グローバル変数に変数名一文字を使うのかよっていいそうだな。

変数名iというのはループ変数。
ローカルよりもさらにスコープも小さいブロックスコープで
なおかつコードの量が少ない時のみOKという話。

あとでコードが長くなったどうするんだ?と言っている奴は理解できん。
ループ変数にかぎらず、コードが長くなったら分割するだろ?修正するだろ。
長くなったら修正すればいいだけ。

動いているコードは修正してはいけないという間違った考えが広まった結果
修正の必要があるのに、いかに既存のコードを修正せずに、コードの追加だけを
行なって修正するというアクロバティックな開発をしているバカが居る。

長くなった時に困る奴はそのたぐいなのか?
295仕様書無しさん:2013/03/28(木) 21:19:59.73
>>290
マウスでクリックするにしても、お絵かきソフトみたいにポチポチクリックしまくるわけじゃないしな。
キーボードでガチャガチャやってたまにポチっとやる程度だし。
296仕様書無しさん:2013/03/28(木) 21:22:26.64
>>289
せっかくだからマウスマスターの俺様がマジレスしてやるw
一文字の時は文字の前にポインタを合わせるのがコツだw
297仕様書無しさん:2013/03/28(木) 21:23:09.31
マウス使うにしても
 対象変数の大体の位置をクリック
 万が一ズレてたらキー操作で補正
 ショートカットキーでリファクタリング開始
だろ?
いちいちマウスで変数全体を選択して右クリックからメニュー呼び出しとかで実行してるならマジでイミフ
298仕様書無しさん:2013/03/28(木) 21:23:44.56
というか、可変ピッチフォントでコード書きするなよ。
299仕様書無しさん:2013/03/28(木) 21:25:08.99
大体名前変更だろ? その他のリファクタリングならともなく、
名前を変更したいと思った時=その名前を目にした時=画面に変数が表示されている

だよな?

その文字を修正する感覚でカーソル持っていって
変数名を変えれば、その他も全て変わるじゃんか。

俺ってそんなに特殊なIDE使ってるか?
300仕様書無しさん:2013/03/28(木) 21:32:16.33
一文字一時変数拒否派はまさか変数名リファクタリングもまともにできないほどに目が悪くなったオッサンだったわけ?
容認派にあんなレッテル貼っといて。

つか、操作に無駄ありすぎだろ。だから変数名の長さとか変なこだわりが出来るんじゃね。
とどのつまり拒否している理由が「選択しにくい」とかでオシマイだったらマジで引くわ。
ここまでオレには理解できない超一流のギャグなんだよな?
301仕様書無しさん:2013/03/28(木) 21:40:25.63
>>300
一文字がダメな理由はまた別にあるだろ。
クリック云々は俺が勝手に言っただけだ。
俺がおっさんであることは否定しない。

>>296
あ、これでいけるね。ありがとうw
302仕様書無しさん:2013/03/28(木) 21:42:40.59
短いコードの中で一文字変数を使うのが
ダメな理由って全部否定されていたよね?

コレ以上何を争う必要があるの?
303仕様書無しさん:2013/03/28(木) 21:44:17.88
ダメなコードは修正するという文化がないところは
今もダメなコードを生成し続けている。

全く成長していない。
304仕様書無しさん:2013/03/28(木) 21:47:05.52
>>294 >>303
よくわからんが俺なら他人が書いたコードには手いれないわ
責任範囲がよくわからなくなるしな
305仕様書無しさん:2013/03/28(木) 21:48:15.86
他人が書いたコードは修正しなくていいのですか?

書いた人がやめたらどうするんですか?
新しい人は全員新規コード書くんですか?

面白い会社ですねw
306仕様書無しさん:2013/03/28(木) 21:49:59.35
こういう所から
仕事してないんだなぁ臭が
だだ漏れて来るんだよなw
307仕様書無しさん:2013/03/28(木) 21:50:00.39
>>302
だから、コーディング規約で禁止されているから修正しろと言われたらどうするかだよ。
本気で受ける方が悪いとか言ってんの?
308仕様書無しさん:2013/03/28(木) 21:51:03.16
>>307
今は、コーディング規約で禁止されてない場合の話をしてる。

コーディング規約で決まっているという前提の話なら
お前だって、関数名を連番にしたりするんだろう?w
309仕様書無しさん:2013/03/28(木) 21:52:56.92
>>307
つか、それ以前に、書きはじめる前にコーディングルール読まないの?
310仕様書無しさん:2013/03/28(木) 21:54:45.32
悪いコーディング規約もあるんで、
規約がどうとかいうのは、話す価値ないよ。

今はいいかどうか話してるだけ。
短いコードなら短い変数名で構わないという
ことで話は続行w
311仕様書無しさん:2013/03/28(木) 21:57:04.68
>>305
一文字変数だと、他人の書いたコードが読みにくいって話?
読みにくかったらそれは、一文字変数以外の問題だと思うよ。
312仕様書無しさん:2013/03/28(木) 21:59:31.36
コーディングルールでしかたなく一文字変数使えないって話ならだれもルール無視してわが道を突っ走れとか言わない。
お仕事がんばってね。
313仕様書無しさん:2013/03/28(木) 21:59:52.91
>294
まぁ同意できるところもあるが

ループ変数はプロトタイプ時は1文字で書きなぐる
その後リファクタリングで3文字程度に置換する

コードはバージョン管理されているのが当たり前なので
要らない部分はコメントアウトなどで残さず、ロジックからきれいに書き直す
既存のコード?知るかよ
年とった人は何故かコメントアウトにして残したがるが、糞ロジックに糞コードが残っていて
それを修正しろとか言いやがる
もうね、馬鹿かと
書き直した方が今後の保守で楽できますよと言っても、動いているからそれに追加修正で済ませろ
新規で作った工数は計上できない、テストは最小限にしたいと
もうね、馬鹿かと
糞コードは読んでも頭の中で流れねぇんだよ、脳内デバッグ不可能なんだよ
314仕様書無しさん:2013/03/28(木) 22:00:43.72
>>305
なんでそういう読み方になるんだか…
追加開発があって既存のソースに手をいれるときに
今回必要なコードしか書きたくないってこと
他人が書いた既存部分には極力手はいれないよ
315仕様書無しさん:2013/03/28(木) 22:01:30.60
>>308
大手のレガシーCのコーディング規約の殆どが、変数名の先頭にi_などの識別を付けるのを知ってるよな?
316仕様書無しさん:2013/03/28(木) 22:06:42.17
>>315
ループカウンタとか普通にiを使いたいけど、規約で使えないって話?

大変ですね。
317仕様書無しさん:2013/03/28(木) 22:08:45.01
一文字変数否定派は、規約でしかたなくそうなのか、自分でそれが有効だと思ってるのか立場をはっきりさせろよ。
318仕様書無しさん:2013/03/28(木) 22:17:10.13
>>316
俺は最低でも3文字以上の分かりやすい名前を使うが、
新人の頃にiとかxとか使って、テスト後に作り直しを食らったことがあるから、
気をつけろって事。
319仕様書無しさん:2013/03/28(木) 22:19:55.25
>>317
一文字を使う利点はない。
320仕様書無しさん:2013/03/28(木) 22:19:55.18
>>318
最初にコーディングルール教えられないで、出来た後にやり直せって言われたの?
ひどい会社ですね。
321仕様書無しさん:2013/03/28(木) 22:28:15.64
みなさんはプロトタイプとか書き捨てコードとか書かないの
そういう時でも、変数名をいちいち付けてるの
もうね、馬鹿かと
まず、動くの作れや
それから改良していけばええやん
いちいち規約がどうだこうだ言ってる奴に限って、糞ロジックなコードを完成させている
シンプルに作れやシンプルに
Simple is best!
322仕様書無しさん:2013/03/28(木) 22:28:58.07
大手はみんな i なんか使わないって言われても、どこまで一般的な話か確認しようがないしな。
コーディングルールに関しては、ローカルな規約とか個人的な意見とかはあんまり興味ないし。

ネットで確認できる範囲の有名プロダクツは、だいたいふつーに一文字変数を使ってるし、
そういうのを書いてる人は、ソースの読みやすさとか保守性に関してはそこらへんのドカタなんか
よりはるかに見識あるだろうし、一文字変数を使うのが普通だろうね。
323仕様書無しさん:2013/03/28(木) 22:29:51.36
>>320
よくある事だ、コーディングルールを見ない方が悪いと言われる。
特にN
324仕様書無しさん:2013/03/28(木) 22:32:23.19
>>321
使い捨てならわかるけど
その後ブラッシュアップしていくなら
最初からまともに名前つけるよ
そのほうが仕事がシンプルだろ
改良する時間なんて普通もらえんぞ
325仕様書無しさん:2013/03/28(木) 22:35:11.68
最初からまともっていう考えをしている人は、
コードっていうのは常に変わってくということを知らないのか?

要求は変わるし、間違いするし、スキルも上がる。
最初からまともという考えだと、成長できないぞ。

最初から不可能な完ぺきを求めるのではなく、
成長していくためにはどうするかを考えるべきだ。
326仕様書無しさん:2013/03/28(木) 22:35:28.77
>>321
書き捨てコードなんて好きにしろよ。
俺は最初からリリース出来るコード書くがな。
327仕様書無しさん:2013/03/28(木) 22:36:15.21
一文字変数で、リリースさてるだろ
有名プロダクツ
328仕様書無しさん:2013/03/28(木) 22:37:34.56
一文字の変数を二文字や三文字にしたって、上の一文字だとクリックできないみたいな
人くらいにしかメリットないね。

フルスペルの単語を二つとか三つつなげてインデックスにして、読みやすくなるって思ってる人は
ろくにコードを書いたことがないんだろ。
329仕様書無しさん:2013/03/28(木) 22:38:34.01
>>324
改良する時間は貰うんじゃない。
開発時間に入れるんだよ。

どうせ汚いコードを頑張って理解して
そしてまた忘れて、また汚いコードを読みなおすのも

汚いコードを綺麗にして、将来も含めて
読みやすくするのも

大して時間は変わらん。
330仕様書無しさん:2013/03/28(木) 22:40:27.53
ましてや変数名の変更なんて
間違いが起こる可能性も殆ど無い
簡単な作業だしな。
331仕様書無しさん:2013/03/28(木) 22:41:09.01
>324
普通の人より作るのも書くのも早いから割りと時間がとれるんだよ
リファクタリングですと言って直すときもあるし
最近のIDEなら正規表現で置換とか変数名の変更するもの数秒で終わるし何ら問題にならない
タイプするのが面倒で、タイプするとタイポする可能性があるので、IDEに補間してもらってるし
どうせ後から仕様変更くるのに、厳密に名前付けてられっかよ
332仕様書無しさん:2013/03/28(木) 22:47:48.74
坊やだからさ
333仕様書無しさん:2013/03/28(木) 22:49:40.35
>>322
だから、さわる人が限られるライブラリやフレームワークは、その人の趣味になる事が多いんだよ。
あんなのは作った本人が直すんだから。
逆に趣味丸出しで見にくくして、他の人に直せなくするぐらいだ。
334仕様書無しさん:2013/03/28(木) 22:49:58.22
>>327
一文字変数がダメって人は、自分の職場のソースしか見たことないのかね。

世間的に評価の高いプロダクツのソースで一文字変数が使われてるのを見て「きたねーソースだな」とか
思ってたらすごい自信だよね。
335仕様書無しさん:2013/03/28(木) 22:51:42.33
>>333
> だから、さわる人が限られるライブラリやフレームワークは、その人の趣味になる事が多いんだよ。
それはクローズド限定だね。

オープンソースのライブラリやフレームワークは
さわる人に限りがない。
336仕様書無しさん:2013/03/28(木) 22:53:03.53
>>333
大人数で保守されていて、限られた人間しか見ないとか趣味的にやってるわけじゃないよ。
337仕様書無しさん:2013/03/28(木) 22:58:22.05
>>335
オープンソースなんて言っても、見やすさなんて考えてないよ。
分かりにくくしてる方が多い。見れば分かるだろう。
338仕様書無しさん:2013/03/28(木) 23:03:05.13
>>337
お前は何一つ見てないくせにw
339仕様書無しさん:2013/03/28(木) 23:03:12.04
>>337
いやいや、すごい考えてるよ。
オープンソースの中でも「Linuxのソースは汚いな。それに比べてBSDはプロの仕事だ」
みたいな話ってあるけどそれでも基本、保守性を上げようって方向。
340仕様書無しさん:2013/03/28(木) 23:05:15.72
>>334
世間的に評価が高くてもそれを開発したプログラマが優秀とは限らないだろ
プログラミング初心者が練習がてらに作ったソフトウェアがヒットしたなんて
ここ最近ではよくあるのを知らないのか?
341仕様書無しさん:2013/03/28(木) 23:07:10.93
>>325
はあ?趣味ならそれでいいけど仕事でそれはねえよ
一つ一つ完成品を作っていかなければ終わらない
仕様変更を受ける受けないはまた別の話

>>329
なんで最初から綺麗に書かないの?
同じ工程に二度も三度も手をかけてそれでプロと言えるのか?
342仕様書無しさん:2013/03/28(木) 23:07:21.40
客観的な判断がなにもないのもいかんので
”一文字変数が使われてない” という証拠を得るため
githubのTrending Reposのコードをいくつか見てみたよ。

結論? 一文字変数みんなつかっていたさ。
畜生め。
343仕様書無しさん:2013/03/28(木) 23:07:25.06
>>340
アイデア勝負みたいな作品じゃなくて、安定性とか保守性が評価されてるようなのね。
344仕様書無しさん:2013/03/28(木) 23:08:03.93
>>341
一文字変数は、コードが短いのであれば
十分綺麗だから。
345仕様書無しさん:2013/03/28(木) 23:09:40.41
一文字だと汚いっていうのが
そもそも間違いなんだよなぁ。
346仕様書無しさん:2013/03/28(木) 23:11:46.57
絵を描く時最初っから綺麗に書けばいいのに
小説書くとき最初っから綺麗に書けばいいのに。

みたいなもんだよなぁ。
347仕様書無しさん:2013/03/28(木) 23:12:49.53
>>342
パフォーマンスみたいな議論なら、ベンチマークでもとれば一発だけど
コーディングスタイルは、生産性とか保守性とか数字にして評価しにくいからね。
(IBMみたいなところはやってるけど)

結局、成果を出してる人やら組織を参考にするのが一番だな。

「俺はプロだから」とか「現場を知ってる」みたいのが根拠の話はもういいわって感じ。
たとえば富士通の何とかって大プロジェクトではこうだったとか、そういう話なら
いろいろ聞いてみたいけど、そういう具体的は話は絶対でないしな。
348仕様書無しさん:2013/03/28(木) 23:26:30.68
1文字変数ってFortranとかBasicとかメモリの制約が厳しかった時代のメモリ節約テクなんでしょ。
そんな応急処置的なテクニックを現代まで引きずる必要は全くないと思うんだけど。
349仕様書無しさん:2013/03/28(木) 23:30:24.84
コンパイラで変数名を短くしてもメモリの節約にはならないし、一文字変数を使ってる人はそんなことくらい分かってると思うよ。
350仕様書無しさん:2013/03/28(木) 23:30:26.14
誰もメモリ節約という理由で一文字変数使ってねーよw


スコープが小さく、大層な名前をつけるまでもない場合に
つけてるだけ。ほんの数回使うだけの一時的な変数に
長い名前使って何の意味があるんだ?
351仕様書無しさん:2013/03/29(金) 00:02:12.01
>>350
ちなみに行が増えたら振りなおすんだっけ?本気で言ってんの?
352仕様書無しさん:2013/03/29(金) 00:41:17.58
>>251
行増やす以上に大変な作業なのか?
353仕様書無しさん:2013/03/29(金) 00:47:39.91
行増やすときに一緒に変えればいいだけ。
354仕様書無しさん:2013/03/29(金) 01:30:48.52
あとで変えるならなぜ最初から変えなくていい名前にしないのか理解できん
355仕様書無しさん:2013/03/29(金) 01:34:21.36
あとで変えるかどうかわからん場合の話だろw

未来なんて誰にもわからんよ。
だからわからん未来の為に冗長な名前をつける必要はない。
コードが短いのだから、短い変数名で良い。
356仕様書無しさん:2013/03/29(金) 01:40:30.68
その基準でいいならループ以外の変数もaとかzとかでいいよな?
357仕様書無しさん:2013/03/29(金) 01:43:03.97
>>356
お前はたとえ一文字でも、変数名に意味があるとわかっているようだな。

その通り i, j, k は数値の場合に使う変数名だ。

a とか z に意味があるなら使うが良い。
358仕様書無しさん:2013/03/29(金) 04:59:08.24
だから別スレ立ててそっちでやれよ
359仕様書無しさん:2013/03/29(金) 05:19:46.85
>>278
リファクタ使えよ…
360仕様書無しさん:2013/03/29(金) 07:45:17.93
>>357
じゃ、カウンタにn、mとか、3重ループにx、y、zとか、答えにaとか、文字にcとか、レコードにrとかありな訳だ。
それで長くなったら振りなおすと。
361仕様書無しさん:2013/03/29(金) 08:55:50.18
一文字の変数名はOKといったが
変な名前を許可するなんて言ってないからなぁ。

例えばPerlではソートの時の比較関数で
変数名aとbに値が代入される。

zは三次元座標の変数として使われる。
362仕様書無しさん:2013/03/29(金) 09:27:54.10
変数に正しい名前を与えるのが難しい場合もあるからな。
そういう時は、時間をかけて悩んで、結果中途半端な名前にするより
狭いスコープに区切って、サクっと一文字変数にした方が分かりやすくなる事も多い。
363仕様書無しさん:2013/03/29(金) 14:28:38.99
ループカウンタにiを使う話してんのにすり替えてるやつがいるな
364仕様書無しさん:2013/03/29(金) 16:05:50.82
そもそもスレに則ってるのかどうかも怪しいが…

絶対にやって欲しくない重要な問題ってことだよな!
365仕様書無しさん:2013/03/29(金) 18:13:13.95
こういうくだらない宗教論争に加わってはダメだということだけはよくわかっただろう?
366仕様書無しさん:2013/03/29(金) 18:14:49.34
>>363
ループカウンタがiの人も、長くなったら振りなおすのか?
367仕様書無しさん:2013/03/29(金) 18:21:43.19
>>365
くだらなくない。
変数名の付け方によって、ソースの可読性、保守性は大きく変わる。
368仕様書無しさん:2013/03/29(金) 18:30:59.04
だから長くしないってば
369仕様書無しさん:2013/03/29(金) 19:34:22.20
>>368
では君の会社では、OSSソースを理解できる人と、業務ソース理解できる人はどちらが多い?
370仕様書無しさん:2013/03/29(金) 20:13:18.36
>>316
私は i_i, i_j, i_k をループカウンタにしてます
371仕様書無しさん:2013/03/29(金) 20:35:35.40
もうそれindex1,index2,index3でいいだろw
372仕様書無しさん:2013/03/29(金) 20:36:14.02
記号を挟むとダブルクリックで選択できないエディタが云々
373仕様書無しさん:2013/03/29(金) 20:47:50.93
>>371
ループ変数は1文字じゃないと可読性が落ちます!ゲラ
374仕様書無しさん:2013/03/29(金) 21:30:35.11
>>370
それじゃ、仕方ない。
375仕様書無しさん:2013/03/29(金) 21:35:25.64
>>370
俺はiii jjj kkk
376仕様書無しさん:2013/03/29(金) 21:56:29.21
>>372
アンスコは一単語として認識されるから問題ない
ハイフンは途切れるけどな
377仕様書無しさん:2013/03/29(金) 22:00:25.56
変数名にハイフンwww
378仕様書無しさん:2013/03/29(金) 22:20:42.02
コードが短い所に、短い変数名をつけても
可読性もメンテナンス性も悪くならない。

なんせコードが短いんだからね。
長くなった時の書き換えも大変ではない。
なぜならコードが短いのだから。
修正してから、長くすればいいだけ。
379仕様書無しさん:2013/03/29(金) 22:21:58.99
>>373
配列の添え字にindex1とか使われるとソースがぐちゃっとした感じになって読みにくいね。

int BubSort(int x[], int n)
{
  int index1, index2, temporary;

  for (index1 = 0; index1 < n - 1; index1++) {
    for (index2 = n - 1; index2 > index1; index2--) {
      if (x[index2 - 1] > x[index2]) {
        temporary = x[index2];
        x[index2] = x[index2 - 1];
        x[index2 - 1]= temporary;
      }
    }
  }
}
380仕様書無しさん:2013/03/29(金) 22:26:42.69
スコープの広さに応じて
変数名の長短もコントロールすると
コードにメリハリが付いて読み易くなるよ!
381仕様書無しさん:2013/03/29(金) 22:29:05.27
>>379
それはおまえが無能だから
382仕様書無しさん:2013/03/29(金) 22:30:28.14
>>381
無能かどうかはどうでもいい。
代替案をだせや。

技術的な話をしている時に
くだらない事を言い出すな。
383仕様書無しさん:2013/03/29(金) 22:36:10.23
>>382
代案を出せ?
炎上学習法かよ。1万円のアマゾンギフトでレクチャーしてあげるよ。
384仕様書無しさん:2013/03/29(金) 22:39:32.79
>>383
俺の希望としては、お前が代替案を出さないで
逃げまくるという状況が、一番笑えるのでそのままでお願い。
385仕様書無しさん:2013/03/29(金) 22:41:17.40
煽ったら答えをもらえるのは小学生までです。
386仕様書無しさん:2013/03/29(金) 22:42:23.39
答えを出せないという方向が
正解ということもあるのです。
387仕様書無しさん:2013/03/29(金) 22:44:11.77
ここのスレの人、『C#ショートコードプログラミング』とか読んでそうだなw
388仕様書無しさん:2013/03/29(金) 22:44:24.35
やっぱり逃走か。所詮一文字禁止を主張するキチガイなんぞ
こんなもんだよ。
389仕様書無しさん:2013/03/29(金) 22:45:58.99
代案も何も、一文字変数に反対してる人たちって>>379が読みやすいって感性なんでしょ?
390仕様書無しさん:2013/03/29(金) 22:49:56.77
>>379はiがindex1となっただけで、
何も分かりやすくなっていない。
もう少し意味のある名前にしろ。
391仕様書無しさん:2013/03/29(金) 22:51:23.37
そもそもアルゴリズムからして超初心者級じゃね?
392仕様書無しさん:2013/03/29(金) 22:54:37.50
>>390
ネットで適当に拾ったバブルソートのコードのi と jを置換したんだけど、
この場合意味のある名前ってたとえばどんなの?

>>379 はよく見たら置換をミスってるわ。
393仕様書無しさん:2013/03/29(金) 22:54:54.73
>>379
その程度、別に普通だし、xとnのほうが問題あるわ
動く動かないでいえばもちろん動くんだろうけど
総じてそんな感じで書いて客に納品できるのか?
394仕様書無しさん:2013/03/29(金) 22:58:37.66
>>393
よけいゴチャゴチャ度が増したような気が

int BubSort(int sortTable[], int tableLength)
{
  int index1, index2, temporary;

  for (index1 = 0; index1 < tableLength - 1; index1++) {
    for (index2 = n - 1; index2 > index1; index2--) {
      if (sortTable[index2 - 1] > sortTable[index2]) {
        temporary = sortTable[index1];
        sortTable[index2] = sortTable[index2 - 1];
        sortTable[index1 - 1]= temporary;
      }
    }
  }
}
395仕様書無しさん:2013/03/29(金) 23:00:39.07
一文字反対派は、こんな10数行程度のコードでも、バーンと「こう書けば読みやすいだろ」とか出せないんだね。
396仕様書無しさん:2013/03/29(金) 23:00:44.42
>>394
俺の感覚ではそっちのほうがまともなコードだよ
まあ、大前提としてそういう単純なロジックを仕事で書くことはないが
397仕様書無しさん:2013/03/29(金) 23:03:23.34
こうか。

int BubSort(int sortTable[], int tableLength)
{
  int index1, index2, temporary;

  for (index1 = 0; index1 < tableLength - 1; index1++) {
    for (index2 = tableLength - 1; index2 > index1; index2--) {
      if (sortTable[index2 - 1] > sortTable[index2]) {
        temporary = sortTable[index2];
        sortTable[index2] = sortTable[index2 - 1];
        sortTable[index2 - 1]= temporary;
      }
    }
  }
}
398仕様書無しさん:2013/03/29(金) 23:04:17.41
>>387
テトリスのコードを短く書く人の本?
399仕様書無しさん:2013/03/29(金) 23:04:54.36
class CSVParser {
  static void Main() {

   TextFieldParser p = new TextFieldParser("text.csv",
    System.Text.Encoding.GetEncoding("Shift_JIS"));

   using (p) {
    p.TextFieldType = FieldType.Delimited;
    p.SetDelimiters(","); // 区切り文字はコンマ

    while (!p.EndOfData) {
     string[] r = p.ReadFields(); // 1行読み込み

    foreach (string f in r) {
      string s = f;
      s = s.Replace("\r\n", "n"); // 改行をnで表示
      s = s.Replace(" ", "_"); // 空白を_で表示
      Console.Write(s + "\t"); // TAB区切りで出力
     }
     Console.WriteLine();
    }
   }
  }
400仕様書無しさん:2013/03/29(金) 23:05:08.26
一文字変数バージョン

int BubSort(int table[ ], int n)
{
  int i, j, temp;

  for (i = 0; i < n - 1; i++) {
    for (j = n - 1; j > i; j--) {
      if (table[j - 1] > table[j]) {
        temp = table[j];
        table[j] = table[j - 1];
        table[j - 1]= temp;
      }
    }
  }
}
401仕様書無しさん:2013/03/29(金) 23:08:20.26
public static void GetAlla(
  string f, string p, ref ArrayList a)
{
  //fにあるファイルを取得する
  string[] s =
    System.IO.Directory.Geta(f, p);
  //ArrayListに追加する
  a.AddRange(s);

  //fのサブフォルダを取得する
  string[] d = System.IO.Directory.GetDirectories(f);
  //サブフォルダにあるファイルも調べる
  foreach (string d in d)
    GetAlla(d, p, ref a);
}
402仕様書無しさん:2013/03/29(金) 23:09:16.43
>>400
tempとtableはなんで?
それらも一文字でいいんじゃね?
403仕様書無しさん:2013/03/29(金) 23:10:41.41
>>399
一文字をフルスペルに直したバージョン

class CSVParser {
  static void Main() {

   TextFieldParser textFieldParser = new TextFieldParser("text.csv",
    System.Text.Encoding.GetEncoding("Shift_JIS"));

   using (textFieldParser) {
    textFieldParser.TextFieldType = FieldType.Delimited;
    textFieldParser.SetDelimiters(","); // 区切り文字はコンマ

    while (!textFieldParser.EndOfData) {
     string[] lineInfields = textFieldParser.ReadFields(); // 1行読み込み

    foreach (string f in lineInfields) {
      string field = f;
      field = field.Replace("\r\n", "n"); // 改行をnで表示
      field = field.Replace(" ", "_"); // 空白を_で表示
      Console.Write(field + "\t"); // TAB区切りで出力
     }
     Console.WriteLine();
    }
   }
  }
404仕様書無しさん:2013/03/29(金) 23:12:31.27
>>397 >>403
ごちゃっとしてるわ。
405仕様書無しさん:2013/03/29(金) 23:12:42.74
ループカウンタ i はやるけど
引数1文字はやらんなあ
406仕様書無しさん:2013/03/29(金) 23:14:57.84
>>402
tempは一文字でもいいかな。
スコープ三行だし。
tableはスコープが関数全体だから長くした。
tblとかでもいいかもしれん。
407仕様書無しさん:2013/03/29(金) 23:15:11.77
>>401
C#かな?
string d in d
なんて大丈夫なの?
408仕様書無しさん:2013/03/29(金) 23:16:05.38
>>407
置換ミスった。
変数一文字制限とかムリ。
409仕様書無しさん:2013/03/29(金) 23:17:15.98
>>380
メリハリかぁ、それだ!
This is a pen. というのを、
this .... pen とアクセント付けて発音するか、
荒井注さんのギャグのように「ディスイズアペーン」と発音するか、
みたいな。
410仕様書無しさん:2013/03/29(金) 23:18:37.45
>>400 のテンポラリのスコープを制限したバージョン。

int BubSort(int table[ ], int len)
{
  int i, j;

  for (i = 0; i < len - 1; i++) {
    for (j = len - 1; j > i; j--) {
      if (table[j - 1] > table[j]) {
        int t = table[j];
        table[j] = table[j - 1];
        table[j - 1]= t;
      }
    }
  }
}
411仕様書無しさん:2013/03/29(金) 23:21:57.14
一文字変数別につこうていいよ派の僕ならこう書くだろうな
ファイルスコープによって関数の命名が先頭大文字か小文字で変わる
extern
int *BubbleSortForInteger(int *items, int length)
{
  int i;

  for ( i = 0; i < length - 1; ++i ) {
    int j;
    for ( j = length - 1; j > i; ++j ) {
      if ( items[j-1] > items[j] ) {
        int temp = items[j];
        items[j] = items[j-1];
        items[j-1]= temp;
      }
    }
  }

  return items;
}
インデントはタブ(4)でするけどね
始めから汎用的に作れよ糞が
412仕様書無しさん:2013/03/29(金) 23:24:54.89
    foreach (string f in lineInfields) {
      string field = f;
      field = field.Replace("\r\n", "n"); // 改行をnで表示
      field = field.Replace(" ", "_"); // 空白を_で表示
      Console.Write(field + "\t"); // TAB区切りで出力
     }
ここら辺が糞冗長過ぎて腹が立つんですけど、これに切れられない奴はセンスが無いと思うな
413仕様書無しさん:2013/03/29(金) 23:25:37.97
また宗教論争ネタで申し訳ないけど、タブは8固定な。
インデントを8以外でしたいときはスペースで。
タブを8以外に設定して、インデントに使うのは許さん。
414仕様書無しさん:2013/03/29(金) 23:26:01.37
具体例あげられない宗教の人がいるらしい
415仕様書無しさん:2013/03/29(金) 23:26:10.21
ForIntegerとかw
比較代入部分をラムダにすればそんな制限なくなるだろw
416仕様書無しさん:2013/03/29(金) 23:27:48.33
Tab4だろJK
417仕様書無しさん:2013/03/29(金) 23:28:43.62
>>403
これは例だからあれだけど
> TextFieldParser textFieldParser = new TextFieldParser("text.csv",
こういう型名と同じような無意味な変数名つけるくらいなら
スコープ狭くして一文字の方がましだと思うぞ。
418仕様書無しさん:2013/03/29(金) 23:29:47.42
全角スペースでインデントしてるやつらが、4tabだ8tabだとかwww
419仕様書無しさん:2013/03/29(金) 23:31:34.45
2chに書いてるんだから仕方ねえだろ
そこに突っ込むとかお前はアホか

つーかコード例投下してないのが丸わかりでワロタ
420仕様書無しさん:2013/03/29(金) 23:32:53.15
>>403
荒らしのコピペと誤解されスルー
421仕様書無しさん:2013/03/29(金) 23:39:17.45
>>397 >>403
一文字変数否定派が読みやすいと思うコード

>>411 >>399
肯定派が読みやすいと思うコード
422仕様書無しさん:2013/03/29(金) 23:41:39.83
ループカウンタ名にjs、jc、jkを使いたいんだけど・・・
423仕様書無しさん:2013/03/29(金) 23:43:37.02
jsをまわ気か
424仕様書無しさん:2013/03/29(金) 23:44:39.05
>415 つまりこういうことですね、分かります。ひさしぶりにC言語系書いたので、コンパイル通るか不明
extern
int BubbleSort(void *items, size_t length, size_t size, int (*comparer)(const void *, const void *))
{
  size_t i;

  if ( items == NULL ) {
    return -2;
  }
  if ( comparer = (int (*)(const void *, const void *))0) {
    return -4;
  }
  for ( i = 0; i < length - 1; ++i ) {
    size_t j;
    for ( j = length - 1; j > i; ++j ) {
      if ( comparer(items[j-1], items[j]) > 0 ) {
        swapBytes((char *)items + size*(j-1), (char *)items + size*j);
      }
    }
  }

  return items;
}
/* ほんとはこんなに、ぎゅうぎゅうにしないけど行数制限が */
static void swapBytes(void *p, void *q size_t size) {
  size_t i;
  char *s = (char *)p;
  char *t = (char *)q;
  for ( i = 0; i < size; ++i ) {
    char u = *s; *s = *t, *t = u;
  }
}
425仕様書無しさん:2013/03/29(金) 23:46:41.11
おっとitemsを返しているじゃないかreturn 0;だなあっこは
426仕様書無しさん:2013/03/29(金) 23:55:30.07
一文字の無意味な変数名ではなく
一文字で意味を表す変数名なのだから
一文字であっても適切な名前なんだがね。
427仕様書無しさん:2013/03/29(金) 23:57:09.12
>>424
関数の引数の変数名は省略しないほうがいいよ。

引数は関数のインターフェースとして外部から参照するドキュメントになってるから。
428仕様書無しさん:2013/03/29(金) 23:58:27.96
>>417
Java標準のコーディング規約
それが気に入らないというのならオラクルに文句を言え
429仕様書無しさん:2013/03/29(金) 23:58:50.82
今度は型やプロトタイプの引数を書く派と書かない派の宗教論争か。
430仕様書無しさん:2013/03/30(土) 00:02:25.14
参考になるわぁ
431仕様書無しさん:2013/03/30(土) 00:05:23.94
プロトタイプなんて1レスも話題には上がってないが・・・
432仕様書無しさん:2013/03/30(土) 00:06:15.33
>>413
8なんかありえないわ。
フォントサイズやディスプレイの解像度もまちまちなのに。
433仕様書無しさん:2013/03/30(土) 00:07:57.97
あー、うんOracleのコーディング規約ね。
それもいい証拠になる。
http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-137265.html#547

例えばこれ、一文字の変数名を使っている
434仕様書無しさん:2013/03/30(土) 00:08:56.01
>>417
ループカウンター一文字は普通にありだが
インスタンス名一文字はないわ
元のクラスがさっぱりわからんじゃん
435仕様書無しさん:2013/03/30(土) 00:09:55.86
>>432
フォントサイズや解像度は関係ないだろ。
436仕様書無しさん:2013/03/30(土) 00:11:51.45
この文書は、Scott W. Ambler氏によって記述された
Writing Robust Java Code - The AmbySoft Inc. Coding Standards for Java v17.01d(2000.1.15)を
訳出したものです。Writing Robust Java Codeは、Java言語のコーディングに関する標準、指針をまとめた文書です。
http://www.alles.or.jp/~torutk/oojava/codingStandard/writingrobustjavacode_pidid93_c4.html#doc1_id1036

> ループカウンタは非常によく使われるローカル変数であり、C/C++でもよく使われたので、
> Javaでもi, j, kといった命名をループカウンタに使用してもよい(Gosling,Joy,Steele)。
437仕様書無しさん:2013/03/30(土) 00:12:24.20
気になったので、直しといた。少なくともコンパイルはできる。まぁあれだ、動く動かないじゃなくて思想だけ読み取ってほしい
extern
int BubbleSort(void *items, size_t length, size_t size, int (*comparer)(const void *, const void *))
{
  size_t i;

  if ( items == NULL ) {
    return -2;
  }
  if ( comparer == (int (*)(const void *, const void *))0) {
    return -4;
  }
  for ( i = 0; i < length - 1; ++i ) {
    size_t j;
    for ( j = length - 1; j > i; ++j ) {
      if ( comparer(items + j-1, items + j) > 0 ) {
        swapBytes((char *)items + size*(j-1), (char *)items + size*j, size);
      }
    }
  }

  return 0;
}

static void swapBytes(void *p, void *q, size_t size) {
  size_t i;
  char *s = (char *)p;
  char *t = (char *)q;
  for ( i = 0; i < size; ++i ) {
    char u = *s; *s = *t, *t = u;
  }
}
438仕様書無しさん:2013/03/30(土) 00:12:51.10
>>434
> 元のクラスがさっぱりわからんじゃん

コードが十分短い場合に限って言えば、
数行上にインスタンス生成コードがあるので
型はすぐに分かる。
439仕様書無しさん:2013/03/30(土) 00:15:01.58
今更ながらJavaは本当に気持ちの悪い言語ですね
440仕様書無しさん:2013/03/30(土) 00:15:25.37
このドキュメントは,Sun Microsystems 社の Java Language Specification において示された,
Java 言語における標準的なコーディングを反映させたものである.
http://numata.designed.jp/javacodeconv/CodeConventions.doc.html

変数名は,その機能を表すために必要十分な短いものであるべきである.
数名の選択は,ぱっと見ただけの者にもその使用意図を示すように設計された,
覚えやすいものであるべきである.

1文字だけの変数名は,いわゆる「使い捨て」の一時的な変数を除いて,避けるべきである.
一時的な変数には,共通して,整数には i,j,k,m,n が使われ,文字には c,d,e が使われる.
441仕様書無しさん:2013/03/30(土) 00:15:47.23
>>435
大ありだわ。おまえが8タブで最適化したコードを
XGAのディスプレイで見たらどうなるよ。
右側突き抜けるだろ。
442仕様書無しさん:2013/03/30(土) 00:18:15.85
プログラマは何故宗教論争が好きなのか
そして、宗教に嵌まってしまうのか
443仕様書無しさん:2013/03/30(土) 00:18:35.51
モルモン教に謝れ
444仕様書無しさん:2013/03/30(土) 00:18:45.20
>>438
インスタンスが4つも5つも並んでて全て一文字でも?
そもそも、なんでわざわざ目を上方向に持っていかないといかんの?
445仕様書無しさん:2013/03/30(土) 00:19:32.25
>>441
おれはタブは8だけどインデントは一段4でするんで。
まあCだと、インデント8で一行80桁とかストイックに
やってる人もいるけど。
446仕様書無しさん:2013/03/30(土) 00:19:47.57
ディスプレイみんな何使ってるの
447仕様書無しさん:2013/03/30(土) 00:20:12.01
>>444
だからなんで長いコードの例を持ち出す?

「短いコードに限っては」って何度も言ってるだろボケ。
448仕様書無しさん:2013/03/30(土) 00:20:57.67
>>444
> そもそも、なんでわざわざ目を上方向に持っていかないといかんの?

普通コードを読むときは、たった一行だけを読むことはない。
449仕様書無しさん:2013/03/30(土) 00:21:57.68
VB.NETのWithは秀逸だと思った
450仕様書無しさん:2013/03/30(土) 00:25:40.64
>>448
え、ひたすら下に向かって書いていくだろ
変数名も補完されるし、型もわかってるし、上に戻ることはほとんどないぞ
451仕様書無しさん:2013/03/30(土) 00:26:17.50
>>449に勝手に補足

JavaScriptとVB.NETのwithの違い

■JavaScriptの場合

var a = 0;
with(obj) {
 a = 1
}

obj.a が存在すれば、obj.aに1が代入されるが、
obj.a が存在しなければ、var aに1が代入される。
objの状態によって、どちらに入るかわからない。

■VB.NET(VB6)の場合

Dim a As Integer
With obj
 .a = 1
 a = 1
End With

aに代入する場合と、obj.aに代入する場合で
書き方が違うから混乱しない。
452仕様書無しさん:2013/03/30(土) 00:27:43.75
>>450
> え、ひたすら下に向かって書いていくだろ

下に向かって書いているのであれば、
少し前に上に自分で書いてるはず。
短いコードなのに自分で書いたものを忘れるわけがない。
453仕様書無しさん:2013/03/30(土) 00:29:15.46
後からコードを付き足す場合は、
そこに書いてある短いコードを読む。

後に付き足す場合でも、既存のコードを読まずに
付き足すことは出来ない
454仕様書無しさん:2013/03/30(土) 00:29:47.84
コードスニペットで自動挿入される catch(Exception e)もわざわざ
Exception exceptionに書き換えてるの?
455仕様書無しさん:2013/03/30(土) 00:31:07.61
>>452
短いというのは何行なの?10行以内?
456仕様書無しさん:2013/03/30(土) 00:34:23.11
そういや関数は50行以内にしろと
コーディング規約で定めているところもあるらしいね。

まあ複雑度を適切な値に収めた場合、
それぐらいの行数になるもんだが。
457仕様書無しさん:2013/03/30(土) 00:35:45.32
>>455
10行ぐらいでいいんじゃね?

変数の出てくる回数や、
ifやforなんかの数でも変わってくるけど。
458仕様書無しさん:2013/03/30(土) 00:44:04.04
サブルーチンの長さも宗教論争ネタだな。

短いほうがいいと思ってる人が多いんで、これ言うと盛り上がるんだけど、
IBMの調査だと120行以下のサブルーチンの場合、行数が短いほど一行
あたりのバグ数が多かったらしいね。

つまり100行のサブルーチン一個より、10行のサブルーチン10個のほうが
バグの数が多いらしい。

出典はコードコンプリート
459仕様書無しさん:2013/03/30(土) 00:51:56.58
それは切出方が下手で関連性が強すぎて
結局長いサブルーチンをより難しく書いてるだけ
みたいなパターンでよくある話ってやつじゃないかな
460仕様書無しさん:2013/03/30(土) 00:56:23.74
1つのif文の中が1000行くらいある糞コードを見る機会のほうが多い
461仕様書無しさん:2013/03/30(土) 00:57:46.90
個々のcaseは単純な巨大switch文とか、
行数は多くても
一行当たりのバグは少ないだろうな
462仕様書無しさん:2013/03/30(土) 01:06:35.58
>>458
コードコンプリート持ってるけど、
何処に書いてある?
見つからなかったよ。勘違いじゃないの?
463仕様書無しさん:2013/03/30(土) 01:07:16.61
MSDOS3.0の頃はハードディスクが30MBしか使えなくて
スペースのインデントをタブに書きかえる作業をしまくったおかげで
スペースでインデントしてるの見ると殺意が湧く
464仕様書無しさん:2013/03/30(土) 01:07:43.63
ハードディスク30MBに
殺意を覚えろよw
465仕様書無しさん:2013/03/30(土) 01:07:44.05
サブルーチンの行数は大昔から話題になっていて、
一画面が20〜25行しかない時代でも
「スクロール無で見渡せる一画面以下」とか言ってる人がいたね。
ああいうのって、言ってる本人も守ってなかったんじゃないかって気がするわ。
466仕様書無しさん:2013/03/30(土) 01:10:46.32
行数じゃなくてロジックの粒度で考えればいいのにね
467仕様書無しさん:2013/03/30(土) 01:14:22.83
スクロール無しって、何行なんだ?行数が変わるじゃんって思うだろ?

でも「スクロール無で見渡せる一画面以下」っていうのは
実は意味があるんだよ。

一画面であれば、視線の移動だけでコードが読める。
実はこれが重要。スクロールがあればスクロールをする時間
上下に行ったり来たり、この時間で読んだコードが短期記憶から消えてしまう。

視線の移動だけで見れれば、スクロールに比べて視線の移動は
高速だからその分速く理解できる。

だから、超巨大ディスプレイでスクロール無しで表示できるけど
視線の移動がきついってなった場合には「スクロール無し」という条件を
満たしていても、コードの把握が困難になってしまう。
文字の大きさを考えると50行ぐらいが限界だろうね。
468仕様書無しさん:2013/03/30(土) 01:15:45.11
tab8とか正気かよ
4でいーんだよ
469仕様書無しさん:2013/03/30(土) 01:16:15.48
>>462
上巻213ページのルーチンの長さの章。

今読み直してみたらIBMの調査で120行どうこうって記憶違いだね。
BasiliとPerriconeの調査で200行以下って話だわ。
IBMの調査は500行以上のルーチンになると行数に比例してエラーの発生率が増えるって話だわ。
470仕様書無しさん:2013/03/30(土) 01:16:23.65
perlのmain関数は4000行以上あるけど読みにくいってことはなかったって感じ?
読んだことないけど
471仕様書無しさん:2013/03/30(土) 01:16:28.30
短期記憶の容量?も個人差あるんで…
472仕様書無しさん:2013/03/30(土) 01:18:07.82
tab8は神の啓示ってリーナスが言ってたよ
473仕様書無しさん:2013/03/30(土) 01:19:30.34
GoogleのJavaScript Style Guideではtabがスペース2個なんだよ
http://cou929.nu/data/google_javascript_style_guide/

Closure Linterを使いたいんだが、
そこだけが気に食わない。
474仕様書無しさん:2013/03/30(土) 01:20:26.44
タブサイズの話をすると、タブとインデントの区別がついてないんじゃないかって人が混ざってくる。
475仕様書無しさん:2013/03/30(土) 01:21:08.45
スペースインデントとか邪道
476仕様書無しさん:2013/03/30(土) 01:24:38.62
>>469

なんだこのサイト?って思ったが、該当箇所を書いてあったから貼っておくわ
http://kaoriha.org/nikki/archives/000512.html

・BasiliとPerriconeによる調査では、ルーチンのサイズがエラーと反比例することがわかった。
ルーチンのサイズが増えるにつれ(最大で200行のコード)、コード1行あたりのエラーの数は減っていく(Basili and Perricone 1984)。

・別の調査では、ルーチンのサイズにエラーとの因果関係はないが、構造的な複雑さやデータの
量がエラーに関係しているという結果が出ている(Shen et al. 1985)。

・1986年の調査では、小さいルーチン(コードが32行以下)とコストまたはエラーの発生率の減少と
に相関関係はないことがわかった(Card, Church and Agresti 1986; Card and Glass 1990)。
このことは、ルーチンが大きくなるほど(コードが65行以上)、コード1行あたりの開発コストが下がることを示してい

・450個のルーチンで実験を行った調査では、小さなルーチン(コメントを含め、ステートメントの数が143行未満)は、
大きなルーチンよりもコード1行あたりのエラー率が23%高いものの、修正コストは逆に2.4倍も少ないことがわかった(Selby and Basili 1991)。

・別の調査では、コードの修正が最も発生しにくいのは、平均して100〜150行のルーチンであることがわかった(Lind and Vairavan 1989)。

・IBMの調査によると、最もエラーが発生しやすいルーチンは、500行以上のものであることがわかった。
500行を超えると、エラーの発生率はルーチンのサイズに比例する傾向にある(Jones 1986a)。
477仕様書無しさん:2013/03/30(土) 01:25:55.85
>>474
同じじゃないの?
8タブって半スペ8個分でしょ?
478仕様書無しさん:2013/03/30(土) 01:27:25.21
>>477
そんな素人丸出しなことを、よくもぬけぬけと
479仕様書無しさん:2013/03/30(土) 01:28:08.42
>>476
これは自動生成のスパムサイト?
ワードサラダだと、もっと原型をとどめないくらい混ぜられるんだけど。

どっかにコードコンプリートのテキストがころがっているのかな。
480仕様書無しさん:2013/03/30(土) 01:31:21.38
>>478
なんだその反論w 同じだろうが
481仕様書無しさん:2013/03/30(土) 01:31:37.91
>>476の内容に関して「ルーチンの長さに関しては、長年にわたって研究が
山ほど積み重ねられてきた。それらの中には、現代のプログラムに当てはまるものもあれば、
そうでないものもある。」とコードコンプリートに書いてある。

さらに長いルーチンのほうが短いルーチンよりもエラーの発生率が高いとはいえない。
長さ自体に制限を設けるよりも、ルーチンの凝集度、ネストの深さ、変数の数、
分岐の数、ルーチンを説明するのに必要なコメントの数、およびその他の
複雑さに関する問題によって決定する。

と書いてある。

がしかし、

200行を超えるサイズのルーチンについて、コストの低下、エラー発生率の低下、
またはその両方を報告している調査は一例もない。コードは200行を超えた時点で、
わかりやすさの上限にぶつかる運命にある。

と結論づけている。
482仕様書無しさん:2013/03/30(土) 01:33:48.02
>>479
なんか、読んで一瞬そのような印象を受けた。
だが違うような気もする。

他にコードコンプリートの文章は見つけられなかった。

オリジナルサイトだが、文章の書き方に脈絡がないだけかもしれない。
483仕様書無しさん:2013/03/30(土) 01:34:04.65
>>480
インデントは字下げで、タブはタブキーを押して入力する制御コード。
インデントをタブキーですることが多いんでインデント=タブと思ってる
人がいるけど別物。

GNUは、インデントはスペース二個で、8の倍数のときにタブを使うって
変態的な使い方をしてる。
484仕様書無しさん:2013/03/30(土) 01:35:03.56
変数名ってアンダーバー使っちゃだめなの?
485仕様書無しさん:2013/03/30(土) 01:37:37.91
>>481
サブルーチンの行数の話題になると、20行とか30行とか、いや50行くらいじゃないと
書きにくいだろとか言われるけど、実際は200行まではコードの質とは無関係って
ことだな。

サブルーチンの長さは、機能単位とかコードの複雑さで決めようって話になる。
486仕様書無しさん:2013/03/30(土) 01:38:48.78
>>483
あのねえ、何タブでインデントするか
何スペでインデントするかって話してんだよ
タブそのものがインデントと思ってるやつなんていねえよ
だったらなんで名前が二つあるんだよw
487仕様書無しさん:2013/03/30(土) 01:39:29.40
>>484
最近は、アルファベットの大文字小文字で変数名の単語を区切るスタイルが
多いけど、昔はアンダーバーで区切るスタイルの人も多かった。
rubyの処理系のソースも、アンダーバーで区切るスタイル。
悪くはないと思う。
488仕様書無しさん:2013/03/30(土) 01:39:55.56
> ・BasiliとPerriconeによる調査では、ルーチンのサイズがエラーと反比例することがわかった。
> ルーチンのサイズが増えるにつれ(最大で200行のコード)、コード1行あたりのエラーの数は減っていく(Basili and Perricone 1984)。

これって、行は多いけどコピペしてるだけとかそんな気もするw
489仕様書無しさん:2013/03/30(土) 01:41:35.74
>>486
ああそうなの。
>>473の人みたいに、タブがスペース二個とか言ってると、
タブとインデントを混同してるんじゃないかって思われるから気をつけたほうがいいよ。
490仕様書無しさん:2013/03/30(土) 01:42:40.49
タブ=スペース2個はあってるだろ?
2タブ=スペース4個だよ?
491仕様書無しさん:2013/03/30(土) 01:44:58.80
>>490
いやタブとスペースとは別物だから。
インデントは、タブとスペースとどっちとも使うけど別の概念だね。
492仕様書無しさん:2013/03/30(土) 01:47:20.37
>>487
C++なんですけど

string tableName;
string table_name;

では前者で統一するほうが最近のスタイルなのでしょうか?
493仕様書無しさん:2013/03/30(土) 01:51:28.98
>>492
前者かな。
有名なCやC++のオープンソースプロジェクトのソースとかいくつが見てみればいいと思う。

参考までにgoogleのルール。
http://www.textdrop.net/google-styleguide-ja/cppguide.xml
494仕様書無しさん:2013/03/30(土) 01:51:34.00
>>490
それはない。タブはタブ。幅はエディタの設定次第。
だから4タブとか8タブとか言ってるわけだが。
495仕様書無しさん:2013/03/30(土) 02:12:54.59
タブとスペース混在でインデントしてる人って結構いるの?
496仕様書無しさん:2013/03/30(土) 02:24:56.84
CamelCase と snake_case はどっちかに統一してあればいいとおもうがね
混在してるとイラッとする
497仕様書無しさん:2013/03/30(土) 02:36:31.57
タブとスペースの混在は結構見る
殺意が・・・
498仕様書無しさん:2013/03/30(土) 02:37:34.32
> GNUは、インデントはスペース二個で、8の倍数のときにタブを使うって
> 変態的な使い方をしてる。
499仕様書無しさん:2013/03/30(土) 02:42:46.98
タブがスペース4幅なら
こういった問題は起きなかったんだろうな。
500仕様書無しさん:2013/03/30(土) 03:00:36.09
>>496
変数名と関数名どちらも統一すべきですか?
501仕様書無しさん:2013/03/30(土) 07:08:11.50
>>377 を読むと、1文字変数肯定派は技術の幅が狭いことがよくわかるね。
マッカーシー先生に謝れ!
502仕様書無しさん:2013/03/30(土) 07:09:38.78
>>500
関数名はcamel case、変数名はsnake caseってのはよくある話だな。
503仕様書無しさん:2013/03/30(土) 07:48:20.73
単純に、
payment = price[cno] * quantity;

a = p[i] * n;
で、どちらが分かりやすいで言うとどっち?
504仕様書無しさん:2013/03/30(土) 08:16:53.74
payment = price[i] * quantity;
505仕様書無しさん:2013/03/30(土) 08:56:46.89
>>504
そのiが関数の引数でも?
そのiがグローバル変数でも?

ふーんw
506仕様書無しさん:2013/03/30(土) 09:04:08.53
アスペっぽいなぁ
507仕様書無しさん:2013/03/30(土) 09:11:47.68
>>505
自分で考えることもできねーなら発言すんな
508仕様書無しさん:2013/03/30(土) 09:31:53.90
いや、何も考えてないのは>>504だろ
509仕様書無しさん:2013/03/30(土) 09:41:20.58
for (int i = f(); g(i); i = h(i)) {
check(i);
update(i);
}
と、
for (int customer = get_first_customer(); is_valid_customer(customer); get_next_customer(customer)) {
  check_customer_validity(customer);
  update_customer_history(customer);
}
どっちが読みやすい?

上のほうが読みやすいという人は、アスペっぽいと思うぞ。
510仕様書無しさん:2013/03/30(土) 09:43:06.54
コードが十分短いという前提なら
明らかに>>509だろw

反論する根拠が無いから
アスペと言い張って何も言わないのは
逃げてるようなもんだな。

さてはて、なんてレスするかw
511仕様書無しさん:2013/03/30(土) 09:44:17.10
作ってる最中は上
半年後に見る場合は下
512仕様書無しさん:2013/03/30(土) 09:44:36.98
一文字変数ってスコープが小さい、例えばループ変数等って話だろ?

for (int c = get_first_customer(); is_valid_customer(c); get_next_customer(c)) {
  check_customer_validity(c);
  update_customer_history(c);
}

十分意味わかるし、見やすいね。
513仕様書無しさん:2013/03/30(土) 09:46:05.97
>>512をみて、cはなんなんだ?
って思う奴は、アスペだろうな。

int c = get_first_customer(); この行から
cが何であるかは明らか。
アスペはたった三行の中で、推論が出来ない。
514仕様書無しさん:2013/03/30(土) 09:46:52.91
294 名前:仕様書無しさん[sage] 投稿日:2013/03/28(木) 21:19:49.35
もうそろそろ、空気読んでない奴が
グローバル変数に変数名一文字を使うのかよっていいそうだな。

変数名iというのはループ変数。
ローカルよりもさらにスコープも小さいブロックスコープで
なおかつコードの量が少ない時のみOKという話。

あとでコードが長くなったどうするんだ?と言っている奴は理解できん。
ループ変数にかぎらず、コードが長くなったら分割するだろ?修正するだろ。
長くなったら修正すればいいだけ。

動いているコードは修正してはいけないという間違った考えが広まった結果
修正の必要があるのに、いかに既存のコードを修正せずに、コードの追加だけを
行なって修正するというアクロバティックな開発をしているバカが居る。

長くなった時に困る奴はそのたぐいなのか?
515仕様書無しさん:2013/03/30(土) 09:47:06.82
大抵他人にレビューしてもらった経験がないアマチュアは上のほうが見通しがいいと言う。
しかし、書いた本人かエスパーでもなければ、具体的に何をしているのか知るにはf(), g(), h(), check(), update()を読まないとわからん。
書いた本人は各関数が何をするかわかっているから見通しがいいと勘違いする。

こういう糞コードがメンテコストを上昇させる。
これからコードを書く人は絶対にこんなオナニーコードを書いちゃいけない。
さもなくば人月50万で売られることになる。
516仕様書無しさん:2013/03/30(土) 09:47:50.56
上、下じゃねーよ。

for (int c = get_first_customer(); is_valid_customer(c); get_next_customer(c)) {
  check_customer_validity(c);
  update_customer_history(c);
}

これがわかりやすいって言ってんだろ。
ループ変数でコード短いから一文字。
この話から逃げるなよ。
517仕様書無しさん:2013/03/30(土) 09:50:50.87
>>513
いや、cはなんなんだと思って1行目を読んでやっと理解するのが通常人。
cなんてわかってるだろうと思い込むのがアスペ。

各行それぞれがself-containedで意味がわかるのが良いコード。
ループ構造全体を読まないとループ内の各行の意味がわからないコードは糞コード。
518仕様書無しさん:2013/03/30(土) 09:52:42.93
>>511がFAでいいだろ
519仕様書無しさん:2013/03/30(土) 09:53:12.39
コンテキスト抜きで意味が分かると思うほうが完全にアスペだぞ
520仕様書無しさん:2013/03/30(土) 09:54:54.82
>>517
お前はコード読むとき、これらの3行をいっぺんに見ないのか?
コードが短いというのは、すぐに判断できるからなんだよ。
だから変数名は短くて良い。
521仕様書無しさん:2013/03/30(土) 09:55:35.14
>>513
うわ、君ってアスペの素質十分だね。
書いた本人がわかるから読む人もわかるだろうというその発想がアスペ丸出し。

はっきり言うと、君みたいのがゴミをまき散らしてプロジェクトを炎上させるんだよ。
522仕様書無しさん:2013/03/30(土) 09:56:01.34
一文字変数禁止反対派がいきなりループ変数限定とか
スコープが短い変数限定とか条件を付けだしててわろたwww
523仕様書無しさん:2013/03/30(土) 09:56:44.25
>>519-520
そうやってコンテキスト依存なコードを書き散らしているわけね
世の中からデスマが無くならないわけだw
524仕様書無しさん:2013/03/30(土) 09:57:32.05
check_customer_validity(c); という一行を読んで、
引数がcustomerだなってのはわかる。
なぜなら、この関数はcustomerを引数に取る関数だって
名前からも明らかだから。

分からないのは、このcがどうやって得られた?という問題だが
check_customer_validity(customer)と書いた所で、
このcustomerはどうやって得られたかはわからない。

結局のところ上をみないと、 get_first_customer();で
得られたんだってことはわからない。
525仕様書無しさん:2013/03/30(土) 09:58:18.11
>>>522
最初っからそうだが?

294 名前:仕様書無しさん[sage] 投稿日:2013/03/28(木) 21:19:49.35
もうそろそろ、空気読んでない奴が
グローバル変数に変数名一文字を使うのかよっていいそうだな。

変数名iというのはループ変数。
ローカルよりもさらにスコープも小さいブロックスコープで
なおかつコードの量が少ない時のみOKという話。
526仕様書無しさん:2013/03/30(土) 09:58:49.47
スコープが3行ならいいだろう
スコープが4行ならいいだろう
そして最後には
スコープがファイル内ならいいだろう
に行き着く猿w
527仕様書無しさん:2013/03/30(土) 10:00:47.63
>>526が猿だったw
528仕様書無しさん:2013/03/30(土) 10:01:26.96
>>524
>check_customer_validity(c); という一行を読んで、
>引数がcustomerだなってのはわかる。

そういう思い込みがバグを生む要因の1つ。
もしかしたらcは小切手ID(check_id)かもしれんぞ?
その小切手IDから振り出し人のチェックをする関数だったらどうする?
529仕様書無しさん:2013/03/30(土) 10:02:18.65
>>527
じゃあ何行までならOKか具体的な数字で言ってみろよw
530仕様書無しさん:2013/03/30(土) 10:04:38.72
関数型言語のように1行ごとに宣言的でコンテキスト独立した言語なら1文字変数でもいいが、
ここでネタになっているような逐次的コードで1文字変数は有害だな。
531仕様書無しさん:2013/03/30(土) 10:06:39.72
>>529

457 :仕様書無しさん:2013/03/30(土) 00:35:45.32
>>455
10行ぐらいでいいんじゃね?

変数の出てくる回数や、
ifやforなんかの数でも変わってくるけど。
532仕様書無しさん:2013/03/30(土) 10:07:22.52
コードの複雑度ってのは
行数と比例しないってことぐらい
知ってるよな?
533仕様書無しさん:2013/03/30(土) 10:10:31.71
まずcheck_customer_validity(c);のcheckってなんだよ
validate_customer()とかvalidate_customer_id()とかhas_customer_id()とかにすべきです
変数名もcだとcustomerなのかcustomer_idなのかcustomer_discripterなのかそれ以外なのか
少なくともcustomerに関係することだけは分かります
534仕様書無しさん:2013/03/30(土) 10:15:16.05
>>532
比例するっつーのアホw
535仕様書無しさん:2013/03/30(土) 10:26:13.91
>>533
もしかして、>>528読んでもまだ何故「validate」ではなく「check」なのかわからないの?
536仕様書無しさん:2013/03/30(土) 10:27:33.24
10行も上を読まないと意味がわからん変数とか、真性の糞コードだろw
537仕様書無しさん:2013/03/30(土) 10:30:46.47
List l = new ArrayList();
Map cm = get_condition_map();
for (int c = get_first_customer(); is_valid_customer(c); get_next_customer(c)) {
  check_customer_validity(c);
  update_customer_history(c);
  cl = get_client(c);
  if(cm.containsKey(cl.get_condition())){
    l.add(cl);
  }
}

まだ短かいままだが少し加えただけで読みにくくなるな
538仕様書無しさん:2013/03/30(土) 10:34:09.75
一文字変数をつくる奴って、「俺は理解できるから」しか
主張がないんだよね。多人数でソースをいじっているという考慮を
しないから、他人が理解できるかどうかということを一切考えない。
同じ主張の人間が、別のスコープで同じ名前の一文字変数を別の
意味でつかったら、他の人が混乱するだろうとか、そういう考えが
できないんだろうね。
型が少ないC言語しか使えない人たちなのかな。
iで始まる型なんて最近の言語じゃ無数にあるんだけどね。
539仕様書無しさん:2013/03/30(土) 10:39:50.45
>>538
違うスコープで同じ名前の変数が使われてたら混乱するって、さすがにアスペじゃないの?
なんのためにスコープがあるかわからない。

あとiで始まる型があったらなんか都合悪いの?
540仕様書無しさん:2013/03/30(土) 10:49:43.73
>>538
一文字変数で可読性やら保守性が落ちるかって話でしょ?
上のほうで落ちないって傍証がいろいろあげられているじゃん。
コードを書いて見比べてたり、見識のある人たちがどう考えてるかとか。

一文字反対派はそれに反論しないで、ひたすら「わかりにくい」を繰り返して話をループさせてるだけ。
541仕様書無しさん:2013/03/30(土) 10:52:20.77
>>504
payment = price[cno] * quantity;
payment = price[uid] * quantity;
payment = price[cnt] * quantity;
この違いは分かる?
542仕様書無しさん:2013/03/30(土) 10:55:37.64
変数にはコメントを付けろ
543仕様書無しさん:2013/03/30(土) 11:02:21.50
スレたてたからそっち行って続けてくれ
http://kohada.2ch.net/test/read.cgi/prog/1364608889/
544仕様書無しさん:2013/03/30(土) 11:04:49.37
>>542
int dairitenKbn; // 代理店区分
string tenpoCd; // 店舗コード

こうですね。
545仕様書無しさん:2013/03/30(土) 11:05:24.16
l = [] # 条件が満たされたクライアントの集合
cm = get_condition_map() # クライアントが満たすべき条件
for c in customers:
check_customer_validate(c)
update_customer_history(c)
if is_valid_customer(c):
break
cl = get_client(c)
if cm.has_key(cl.get_condition()):
l.add(cl)
つかなんで非オブジェクト指向的な書き方とオブジェクト指向的な書き方が混在しているんだ
546仕様書無しさん:2013/03/30(土) 11:05:47.07
スレたてたからそっち行って続けてくれ
http://kohada.2ch.net/test/read.cgi/prog/1364608889/
547仕様書無しさん:2013/03/30(土) 11:07:01.25
l = [] # 条件が満たされたクライアントの集合
cm = get_condition_map() # クライアントが満たすべき条件
for c in customers:
 check_customer_validate(c)
  update_customer_history(c)
  if is_valid_customer(c):
   break
  cl = get_client(c)
  if cm.has_key(cl.get_condition()):
   l.add(cl)
半角スペース使えないんだったな
548仕様書無しさん:2013/03/30(土) 11:08:17.58
>>545
ごめん、俺がCのわからないJava使いだからああなった
549仕様書無しさん:2013/03/30(土) 11:09:01.99
Javaドカタ
550仕様書無しさん:2013/03/30(土) 11:09:46.99
>>539
>違うスコープで同じ名前の変数が使われてたら混乱するって、さすがにアスペじゃないの?

混乱しないのは書いた本人だけだよ、アスペくん
551仕様書無しさん:2013/03/30(土) 11:11:29.93
>>514
画面への出力項目が単純に10項目増えたとする。
普通は10行追加して終わり。
変数のスコープの観点から見ても、単に長くなったからと言って、
無理に関数に分割したりしない。
552仕様書無しさん:2013/03/30(土) 11:11:44.87
>>550はスコープを理解できないドカタ
553仕様書無しさん:2013/03/30(土) 11:11:46.72
書いた本人だって5年後に読んだら爆死するぞw

一文字変数厨って、結局入門書のループの説明にiとかjとかあったのを
何の疑いもなく使い続けているんだろうな。
554仕様書無しさん:2013/03/30(土) 11:12:18.30
アスペアスペうるせぇよ、定型さん
555仕様書無しさん:2013/03/30(土) 11:12:37.50
>>552はスコープ理解のコストを自覚していないアスペ
556仕様書無しさん:2013/03/30(土) 11:12:38.78
スコープを理解できないから
全部の変数名を長くつけるというルールを覚えたドカタw
557仕様書無しさん:2013/03/30(土) 11:13:10.30
>>554
図星?
558仕様書無しさん:2013/03/30(土) 11:13:59.09
定型には土方がお似合いだ
559仕様書無しさん:2013/03/30(土) 11:14:24.83
>>556
スコープ理解のコストを理解しているから
各行の意味をそれぞれ単独で理解しやすくするように
変数名や関数名にきちんと意味のある名前をつける

たったそれだけの簡単なことができないバカはコード書くな
560仕様書無しさん:2013/03/30(土) 11:14:45.38
>>555
スコープ理解のコストって、お前……
一文字変数否定派ってこんなレベルかよヤベーな
561仕様書無しさん:2013/03/30(土) 11:15:26.67
アスペのみなさんもこちらへ移動。
http://kohada.2ch.net/test/read.cgi/prog/1364608889/
562仕様書無しさん:2013/03/30(土) 11:16:16.86
>>560
各行の意味がコンテキスト依存になっていることのコスト

と書けばわかるかい、おばかさん?
563仕様書無しさん:2013/03/30(土) 11:17:18.06
一文字変数使って平気なのは10行以上のコードを書いたことがないから
564仕様書無しさん:2013/03/30(土) 11:19:05.94
このスレッドだけIDが必要です
565仕様書無しさん:2013/03/30(土) 11:20:51.70
>>562
COBOLでも使ってろよ
566仕様書無しさん:2013/03/30(土) 11:23:46.37
>>565
ああ、コンテキスト依存なコードのコストが理解できないんだね。
さっさとこの業界から去ったほうがいいよ。君自身のためにも、周囲のためにも。
567仕様書無しさん:2013/03/30(土) 11:25:18.56
>>563
修正させられる身としては、カウンタだけならともかく、一文字変数満載コードは5行でも殺意がわく。
568仕様書無しさん:2013/03/30(土) 11:26:23.33
ショートコーディング(キリッ
569仕様書無しさん:2013/03/30(土) 11:28:34.40
>>512
あ、俺これだわ
570仕様書無しさん:2013/03/30(土) 11:28:40.41
i がソースの複数個所で使われていて、混乱するとか、それを理解するのにコストがかかるとかさすがに屁理屈すぎるわ。
571仕様書無しさん:2013/03/30(土) 11:30:37.30
>>566
実行時のコンテクストに依存するポリモーフィズムなんて論外だよな!
572仕様書無しさん:2013/03/30(土) 11:31:22.40
一文字変数を使うバカは人生の敗北者part1
http://kohada.2ch.net/test/read.cgi/prog/1364608889/
一文字変数についてはこっちでやろうね、お兄ちゃん
ここは初心者を導くスレです
573仕様書無しさん:2013/03/30(土) 11:32:20.96
>>572
しつこい死ね
574仕様書無しさん:2013/03/30(土) 11:33:36.48
>>573
スレ違いな話題を続けるおまえがしつこい
さっさと該当スレへ行け
575仕様書無しさん:2013/03/30(土) 11:33:49.70
ちなみに、
1 payment = price[cno] * quantity;
2 payment = price[i] * quantity;
3 a = p[i] * n;
で、3もありなのか?
576仕様書無しさん:2013/03/30(土) 11:34:20.11
配列もリストもiなんか使わなくても回せるのに
いまだにiが必要な言語を使ってるやつは不幸だな
577仕様書無しさん:2013/03/30(土) 11:36:05.78
ちなみに一文字変数のためにこのスレは半分消費されています
578仕様書無しさん:2013/03/30(土) 11:36:31.43
コンテキスト依存のコードって連呼してるやつ恥ずかしくないのか?
それともガチのバカ?
579仕様書無しさん:2013/03/30(土) 11:37:13.98
たわけ、わろた、ぐぐれかす
580仕様書無しさん:2013/03/30(土) 11:37:38.36
>>575
4 payment = price[priceIndex] * quantity;

みたいのが読みやすいって人もいるみたいだけど。
581仕様書無しさん:2013/03/30(土) 11:37:55.68
>>577
いいんじゃね、内容的に面白いぞ。
582仕様書無しさん:2013/03/30(土) 11:39:31.72
>>580
indexが一個ならiでいいけど複数ならそっちのほうが読みやすいよ
583仕様書無しさん:2013/03/30(土) 11:44:19.25
そろそろ昼だから昼休みの1時間は終戦な
その間に、お互い意見をまとめよう
一文字変数肯定派は、どういう時に使ってよくて、どういう時に使うべきでないか
一文字変数否定派は、何故使ってはいけないのか
世の中、最大多数の最大幸福だからな
584仕様書無しさん:2013/03/30(土) 11:46:20.30
>>582
>>397>>410 みたいにindex1 とindex2 だったらi, j でいいよな。
585仕様書無しさん:2013/03/30(土) 11:53:10.34
>>575
一文字派の人でも、3を押す人はいないんじゃないの。
cnoとか意味のない名前だったら 2 の i でいいわ。
慣習としてループカウンタにiを使うって、誰でも知ってるから。
cnoでも悪いってわけじゃないけど。
586仕様書無しさん:2013/03/30(土) 11:54:58.54
アリゴリズムの話じゃなくて、ソースコードの可読性とか保守性の話なのが
時代だなーって思った。
587仕様書無しさん:2013/03/30(土) 11:55:30.39
>>584
3個とか4個だったら?
俺は>>580のほうが好きだわ
588仕様書無しさん:2013/03/30(土) 11:59:57.52
アスペは状況に応じてルールを使い分けるのが苦手だし
低能はちょっとでも複雑なルールは覚えられない

だからアスペや低能は「一律で長い名前を付ける」って単純なルールに固執する
589仕様書無しさん:2013/03/30(土) 12:00:14.14
>>580
payment = price[priceIndex] * quantity;
これはiやcntと変わらないな。
商品バスケット内の計算などなら、
payment = price[containerNo] * quantity;
ってとこだな。

1 payment = price[containerNo] * quantity;
2 payment = price[cno] * quantity;
3 payment = price[i] * quantity;
4 a = p[i] * n;
で、4もありなのか?
590仕様書無しさん:2013/03/30(土) 12:05:10.84
ちょっと前に行数の話が出てたけど、おまえらが「この関数(メソッド)複雑だな」とか思うのって
行数や、変数、制御構文の数で言うとどのくらい?
591仕様書無しさん:2013/03/30(土) 12:08:24.13
>>590
ネストのひどいifは、他に書き方なかったんか、と呆れる
592仕様書無しさん:2013/03/30(土) 12:09:54.56
>>571
逆だろ。
ポリモーフィズムは別々のメソッドに共通した意味を与えるためのものだ。
論外なのはお前のシッタカ知識。
593仕様書無しさん:2013/03/30(土) 12:16:39.23
>>589
4はないね。
4がいいって人は居ないと思うけど、なんで念を押して何度もきくの?
594仕様書無しさん:2013/03/30(土) 12:24:11.05
>>593
途中で4もOKって人がいたように見えたからな。
とりあえず確認しとこうと思って。
595仕様書無しさん:2013/03/30(土) 12:26:09.67
>>587
状況にもよるよね。
三つも四つも複数ののテーブルを同時になめて、それぞれに独自のインデックス用の変数を
用意しなくちゃならないって状況が、そんなにないと思うけど、あったらそれぞれ
ユニークに名前をつけたほうがいいと思う。
596仕様書無しさん:2013/03/30(土) 12:37:16.37
職場のアホが取るに足らない作業をいつまでもいつまでもやっていたから、
「ここをこういう風にすれば速くなりますよ。」と誰でも思い付く方法を助言してやった。
すると奴は不機嫌そうに「そんな方法があるならもっと早く教えてほしかった。」と応え、ニヤニヤしていた。
普通、「なるほど。ありがとう。」だろ
感謝もできねーのかクズ
597仕様書無しさん:2013/03/30(土) 12:39:32.34
嫌味ったらしく言った上愚痴ってるならお前が発達障害
そうじゃないなら相手が発達障害

自分の態度によって相手の態度が変わるということが理解できない奴多いからな
自分の言動が招いた結果なのに「アイツにああ言われたこう言われた」って言いふらすのが
飽きるほどよくあるパターン
598仕様書無しさん:2013/03/30(土) 12:44:31.78
コードを読む、ということを処理を理解することではなく
変数名や関数名から想像して理解した気分になることを指す
SEの皆様方にとっては
名前は全て説明的な長い名前であって欲しいのです
スコープなんて関係ないし、ポリモーフィズムも関係ない
だって単語から処理を想像するだけですからね
599仕様書無しさん:2013/03/30(土) 12:47:14.30
行数とソースのサイズが業績となります。
600仕様書無しさん:2013/03/30(土) 12:51:53.62
もうこの話飽きたお
601仕様書無しさん:2013/03/30(土) 13:00:07.34
アスペだの発達障害だの、
病気認定しようとするやつら多すぎるな
おまえらは医師兼プログラマーなのか
602仕様書無しさん:2013/03/30(土) 13:01:56.98
>>595
俺のいつもやっているのは2だ。
確かに3はループが1画面に収まっていて、単一ループなら容認できる。
しかし2と3には分かりにくいが差がある。
1と3を比べた方が分かるが、カウンタを見ると、なんのループか想像できる。
1は冗長に見えるが意味は分かりやすい。まあ慣れかな。
603仕様書無しさん:2013/03/30(土) 13:35:56.16
>>596
お前性格悪いだろ
604仕様書無しさん:2013/03/30(土) 14:42:52.27
暴れてんの1人やなぁ
605仕様書無しさん:2013/03/30(土) 14:42:56.26
>>603
でかいテキストデータを加工する作業があって、サーバーから自分のPCに転送して
秀丸の矩形選択なんかを活用してセコセコ編集して、またサーバーに戻して「ドヤ」みたいな
ベテランがいたけど、「それスクリプト使えば一瞬ですよ」とは言わないで「秀丸って
そんなことできるんですか。便利ですね」って言っておいた。
606仕様書無しさん:2013/03/30(土) 15:27:17.01
>>605
お前性格良いなwww
607仕様書無しさん:2013/03/30(土) 16:56:37.11
スレ分かれたら途端につまらなくなったな
608仕様書無しさん:2013/03/30(土) 17:30:28.66
>>605
これがプロか
609仕様書無しさん:2013/03/30(土) 18:08:04.17
変数の生存期間が短い場合は
ループ変数は一文字でいいのか。
いつも俺がやっていたことだな。
610仕様書無しさん:2013/03/30(土) 18:11:18.05
List l = new ArrayList();
Map cm = get_condition_map();

for (int c = get_first_customer(); is_valid_customer(c); get_next_customer(c)) {

  check_customer_validity(c);
  update_customer_history(c);

  cl = get_client(c);
  if ( cm.containsKey(cl.get_condition()) ) {
    l.add(cl);
  }
}

短い変数名でも十分読みやすいな。
611仕様書無しさん:2013/03/30(土) 18:14:18.03
変数が5つもあったら
一文字変数だとわかりづらいだろ!



これって、変数の数が少なければ
一文字変数でいいと認めているようなもんだよなw
612仕様書無しさん:2013/03/30(土) 18:18:52.55
結局一文字変数禁止派は孤軍奮闘で荒らしてただけだった模様
613仕様書無しさん:2013/03/30(土) 19:08:22.77
義務教育の中でも
vと言えば速度なんだ
mと言えば質量なんだ

これらを数式内でvelocityだmassだと記述せよと言ってるみたいに見える
614仕様書無しさん:2013/03/30(土) 19:33:48.67
高校物理とかなら1文字の変数名を見ただけで意味がわかるよな。

もし高校物理で1年生の時はmは質量でvは速度を表わす変数、、
でも2年になったらmは慣性モーメントでvは電圧を表わす変数、、
3年になったらmは摩擦係数でvは光速を表わす変数、
テストでは全部出ます、ということにしたらどうなる?

高校物理程度なら1文字でも名前衝突せずに済むからいいよ。
だが情報システムでは同時に関連する概念の数が違うからな。
たった1文字で表わされた変数が何を表わすのか、
その1文字を見ただけでは判らないよ。
5行だか10行だか上に書かれたfor文とかを見ないと判らない。

それって効率的なことだと思うかい?
それぐらいなら、速度はvelocity、質量はmassと綴ったほうが効率的だと思うぞ。
615仕様書無しさん:2013/03/30(土) 19:40:56.56
なに、4番OKの人いるのか?
616仕様書無しさん:2013/03/30(土) 19:41:51.41
>>614
> だが情報システムでは同時に関連する概念の数が違うからな。
つまり全部main関数に書くということですか?
617仕様書無しさん:2013/03/30(土) 20:00:38.93
ぇ?
618仕様書無しさん:2013/03/30(土) 20:19:14.94
>>616
baka?
619仕様書無しさん:2013/03/30(土) 20:35:18.87
>>614
仰る意図は至極正しいけれども
電圧と速度を一つの問題で同時に扱うことはないから文脈を理解していれば問題ない
それから光速度は変数でなく#defineしておこう
620仕様書無しさん:2013/03/30(土) 20:38:51.66
というようなことを>>616は言いたかったのではなかろうか
621仕様書無しさん:2013/03/30(土) 20:47:24.67
ほう
622仕様書無しさん:2013/03/30(土) 20:53:59.03
>>620
なんだってーッ!それは本当かキバヤシ!!
623仕様書無しさん:2013/03/30(土) 20:55:53.77
>>619
地場の中を導線が直線等速運動している場合の起電力とか
624仕様書無しさん:2013/03/30(土) 21:15:14.43
>>614
変数が1文字だったから問題の意味が解らなかったぞ!
と言う受験生は未だかつていないと思われ。
625仕様書無しさん:2013/03/30(土) 21:36:41.72
京都大学の入試とかで出そうでなんかいやだIQが違いすぎる
626仕様書無しさん:2013/03/30(土) 21:42:39.66
そりゃそうだ、大抵の問題は日本語で説明されているからなw
627仕様書無しさん:2013/03/30(土) 21:46:19.44
それに対して日本語読まないと
変数の意味がわからないじゃないか。
と文句をいうやつはイない。
628仕様書無しさん:2013/03/30(土) 21:55:54.25
>>627
じゃあどうやって問題を示すんだい?
数式を出してくれるのかい?
それって物理の問題なのかい?
629仕様書無しさん:2013/03/30(土) 21:59:10.38
なんという的外れなつっこみ
630仕様書無しさん:2013/03/30(土) 22:01:19.87
>>614
> もし高校物理で1年生の時はmは質量でvは速度を表わす変数、、
> でも2年になったらmは慣性モーメントでvは電圧を表わす変数、、
> 3年になったらmは摩擦係数でvは光速を表わす変数、
> テストでは全部出ます

全部同じスコープ内でその3セット6種類の変数が出現するのか?
もしそうなら確かに変数名はフルスペルの方がいいが、おそらくそんな事にはならん
631仕様書無しさん:2013/03/30(土) 22:10:16.22
コードも同じだな。
短い場合は変数名一文字でも良いというのは
そういうこと。
632仕様書無しさん:2013/03/30(土) 22:33:07.03
別のスコープなら混同しないというのは、
別の方程式なら同じ変数名使っても混同しない
というのに等しい馬鹿さ加減だなw
633仕様書無しさん:2013/03/30(土) 22:37:40.89
>>630
磁界中を光速の1.0x10^-7倍で移動している導線から発生する起電力で
所与の慣性モーメントの円筒状の物体を回転させる時の角速度を求めよ。
ただし、円筒状の物体は外周にて所与の摩擦係数と垂直抗力で接触しているものとする。
634仕様書無しさん:2013/03/30(土) 23:09:56.56
よし、飯食おう
635仕様書無しさん:2013/03/30(土) 23:38:55.76
>>632
> 別のスコープなら混同しないというのは、
普通混同しない。

お前はすべての変数名が被らないような
コーディング規約で開発してるのか?
ローカル変数は「クラス名+関数名+変数名」という命名規約とか?
636仕様書無しさん:2013/03/30(土) 23:42:12.32
大学受験板に迷い込んだらしい
637仕様書無しさん:2013/03/31(日) 00:29:58.31
頭がパーン
638仕様書無しさん:2013/03/31(日) 00:37:07.81
1文字変数は専用スレがあるんだから、そっちでやれよw
639仕様書無しさん:2013/03/31(日) 00:42:55.44
一文字変数スレはキラキラネーム都市伝説論争してる...
謎だ
640仕様書無しさん:2013/03/31(日) 00:46:08.18
「一文字でも意味がわかる」ということを
認識できないのだろうか?
641仕様書無しさん:2013/03/31(日) 01:07:07.93
仕様を守りたがらないから、スレタイも守りたがらない
642仕様書無しさん:2013/03/31(日) 01:11:42.81
>>639
全部27のせいじゃねーかwww
643仕様書無しさん:2013/03/31(日) 03:28:23.63
コードを書くときのモチベーションの保ち方を教えてください
644仕様書無しさん:2013/03/31(日) 03:36:24.12
既存の俺が入ってくる前のコードが
いかに汚くて開発効率が悪いかを訴えて
改善したコードを社内ブログに書いてストレス解消している。
645仕様書無しさん:2013/03/31(日) 03:51:45.99
ぜひ参考にしたいわぁ
646仕様書無しさん:2013/03/31(日) 06:18:58.43
日本よ、これが「馬鹿」だ! >>635
647仕様書無しさん:2013/03/31(日) 07:03:20.40
>>646
言い返せないならレスすんなよクソガキ
648仕様書無しさん:2013/03/31(日) 07:40:11.14
>>647>>632

f = m a
l = m ω
f = m n

これを組み合せる時に、どのmとどのmが同じで、どのmとどのmが違うのか、
立式した箇所を参照すれば混乱しないよねw
f = m aのfをf = m nに代入する時にはm1 a = m2 nにすればいいんだよねw

ほんと君って馬鹿丸出しだね。
649仕様書無しさん:2013/03/31(日) 07:46:07.58
>>635
>ローカル変数は「クラス名+関数名+変数名」という命名規約とか?

そんなことしないと変数名を被らないようにつけられないのか?
おまえ、プログラマの素質ないから、さっさと転職しろ。

勘違いするなよ、おまえのために言っているんじゃない。
おまえの書いたコードで迷惑がかかっている人達のために言っている。
650仕様書無しさん:2013/03/31(日) 07:46:49.40
>>648
スレ違い
651仕様書無しさん:2013/03/31(日) 07:57:28.62
反論できなくなったら「スレ違い」
わかりやすッ!
652仕様書無しさん:2013/03/31(日) 08:01:00.21
まず、奴隷同士で戦おうとするのを止めて、
もっと広い視野を持って欲しい。
653仕様書無しさん:2013/03/31(日) 08:12:52.55
職場でのルールが今までの自分のやり方と違うからといって
職場のルールをアスペだのと罵倒する前に
なぜそのルールが出来たのか、理由を理解する習慣をつけてほしい。
654仕様書無しさん:2013/03/31(日) 08:24:38.20
>>651
反論もくそも該当スレがわざわざ有るんだからさ…
655仕様書無しさん:2013/03/31(日) 12:38:16.27
スレが盛り上がると止めようとするやついるな
656仕様書無しさん:2013/03/31(日) 12:44:28.84
ルシャトリエの原理だろうな
657仕様書無しさん:2013/03/31(日) 12:53:21.57
しかし、有名なコーディング規約で
一文字変数は許されているのであった。
勝負ありだなw
658仕様書無しさん:2013/03/31(日) 13:56:33.37
最初は「コーディング規約はクソ」と噛み付いておいて
「コーディング規約で許されているから勝ち」と勝利宣言

おめでとうw (頭が)
659仕様書無しさん:2013/03/31(日) 14:04:39.33
「コーディング規約はクソ」っていうのは、
どこの馬の骨かしらない会社のオレオレ規約

「コーディング規約で許されているから勝ち」というのは
世界的に有名な規約。

ごっちゃにしたらいかんよ。

何か反論でもある?w
660仕様書無しさん:2013/03/31(日) 14:14:32.64
みんなやってるから、有名なグループがそうしているから、
で正当化できると思っている頭って
ほんとうにおめでたいですね。
661仕様書無しさん:2013/03/31(日) 14:15:21.61
で、反論は?
有名っていうのは理由があって有名なんだよ。
その有名を御前は打ち負かすことが出来ない。
662仕様書無しさん:2013/03/31(日) 14:16:10.78
>>659
そんなのおまえの選択次第じゃねえかw
663仕様書無しさん:2013/03/31(日) 14:16:30.31
さっさと「ぼくのつくったきやくがゆうめいなやつよりもすぐれてるんだ」って
言って負け宣言すればいいのにw
664仕様書無しさん:2013/03/31(日) 14:16:45.82
これからコードを書く人は、
>>659のような思考停止はせずに、
決め事についてちゃんと理由を考慮して
判断するようにしてくださいね。

>>659のマネをしていると
ググってコピペしただけで仕事した気になって、
レビューで問題を指摘されたら
「有名なコードからコピーしたんだい!僕は悪くない!」
とか喚き出す似非プログラマになっちゃいますよ。
665仕様書無しさん:2013/03/31(日) 14:17:18.73
>>662
選択次第?何言ってるの?

無名な規約はクソですね。
有名な規約は優れてますねってだけだろw
666仕様書無しさん:2013/03/31(日) 14:18:11.66
一文字変数が問題ないのは、
すでに結論でてるだろw

その上で、有名な規約でも
認められてるって言ってるんだ。


一文字どうしても禁止っていう規約は
もう手詰まりだよ?(笑)
667仕様書無しさん:2013/03/31(日) 14:20:43.72
おいおい、「クソな規約」っていうのは
最初っからクソだって認めてただろ?

クソな規約があるんだ、一体どうすればいいんだ!
従うしかないだろ。

って流れだっただろw
668仕様書無しさん:2013/03/31(日) 14:20:53.63
>>665
有名な規約が十分なら各社が独自の規約作る必要ないだろ
何で各社が独自に作ってるのかを考えてみる能力すらないのか
669仕様書無しさん:2013/03/31(日) 14:21:49.10
これって結局嘘だったのか・・・

54 名前:仕様書無しさん[sage] 投稿日:2013/03/24(日) 14:47:42.69
大体仕事の場合は、一文字の変数名はカウンタを含めて、殆どコーディング規約で禁止されている。
670仕様書無しさん:2013/03/31(日) 14:22:35.61
あーあ、>>666みたいな思い込みの強いタイプって
プログラマに向いていない典型例だよな

かわいそうに(周囲が)
671仕様書無しさん:2013/03/31(日) 14:23:07.20
>>668
なんで独自に作っているか = 有名なものがあるのを知らなかった。

聞いてみたらいいよ。なんでわざわざ作ったんですか?って
そしたら顔真っ赤にして怒るから。
672仕様書無しさん:2013/03/31(日) 14:23:15.98
>>668
バカだから劣化した車輪の再発明が大好きなんだよな
673仕様書無しさん:2013/03/31(日) 14:23:58.45
>>670
じゃあ、まだ、生存期間が短い場合に、
一文字変数が問題ないことについて語る?

いいよ、問題あるという理由を書いてみ。
674仕様書無しさん:2013/03/31(日) 14:25:05.73
え、まさか、
「コーディング規約は世界に1つあれば十分」
だと本気で思ってるのか!?

頭わるっ!
675仕様書無しさん:2013/03/31(日) 14:25:25.19
>>671
バカかおまえは。作ったばかりの零細ならまだしも
普通の開発会社で一般的な規約を参考にせずに規約作る会社なんて無いわ。
676仕様書無しさん:2013/03/31(日) 14:25:59.28
>>673
君のような頭の悪い人間は何文字変数だろうがプログラムを書くべきじゃないと思う。
677仕様書無しさん:2013/03/31(日) 14:27:03.96
生存期間が短い場合に一文字変数が問題ないという理由。

生存期間が短いので、その変数を宣言しているコードが近くにある。
そのため、今変数が何を意味しているかすぐに分かる。

そして、i, j, kなどは、慣習として一時的な数値として使うことが
知られている。そのため一文字であっても何のための変数かが明確。
略みたいなもの。意味のない名前ではない。
678仕様書無しさん:2013/03/31(日) 14:29:07.18
一文字変数がダメな理由

俺が読んだ入門書にそう書いてあったから。
679仕様書無しさん:2013/03/31(日) 14:31:08.58
>>677
コーディング規約にケチつけるのは、
変数の生存期間とスコープの違いを理解してからにしてください。
680仕様書無しさん:2013/03/31(日) 14:32:36.38
特に新人は、大企業になればなるほど、
しっかりとしたコーディング規約が会社にある(ように見える)ほど
外部のコーディング規約を参照するべき。

でないと、そのコーディング規約が妥当であるかわからない。
会社のだめな規約を押し付けられ、それが外部で通用しないものであることを
知らずに、技術者としてだめにさせられてしまう。

例えば世の中には関数を連番で管理するとか
一文字の変数名は絶対にダメとか意味不明な規約を作っている所が結構ある。

ダメな規約というのはその根拠が書かれていない。結論だけしか書かれていない。
ちゃんとした規約には、そうしたそういう規約を作ったかの根拠が書かれてある。

コードを書く人に絶対やってほしいこと。
681仕様書無しさん:2013/03/31(日) 14:36:13.29
特に新人は、大企業になればなるほど、
しっかりとしたコーディング規約が会社にある(ように見える)ほど
外部のコーディング規約を参照するべき。

でないと、そのコーディング規約が妥当であるかわからない。
会社のだめな規約を押し付けられ、それが外部で通用しないものであることを
知らずに、技術者としてだめにさせられてしまう。

ましてや、外部のコーディング規約を単に有名だからというだけで
金科玉条のように信じてしまうのは技術者としての死を意味する。

例えば世の中には関数を連番で管理するとか
一文字の変数名はループ変数ならオッケーとか意味不明な規約を作っている所が結構ある。

ダメな技術者というのは規約の理由について考えない。好き嫌い、有名無名で判断する。
ちゃんとした技術者は、そうしたそういう規約を作った理由についてきちんと考察し、
規約を作った人の意見を真摯に受け止める。

コードを書く人に絶対やってほしいこと。
682仕様書無しさん:2013/03/31(日) 14:37:17.80
有名な規約って実質デファクトスタンダードだからな
683仕様書無しさん:2013/03/31(日) 14:49:09.49
俺自身は別に一文字の変数がいいとかダメとかはいわないけれど、

会社のコーディング規約がいいかどうかわからないので
外部の有名なコーディング規約を参照しろと言っているだけなんだ。

このことに誰も反論はないだろうね。


外部の有名なコーディング規約の中に一文字の変数は
場合によってはOKと書かれていたんだ。

俺の主張じゃないよ。外部の有名なコーディング規約の中に
書かれていたという事実を書いてるだけだよ。
684仕様書無しさん:2013/03/31(日) 14:54:04.43
外部の有名なコーディング規約が正しいとは限らないけれど、
3つ調べて3つとも書いてあったんだ。

いや、俺が一文字の変数を場合によって認めろと言ってるわけじゃない。
書いてある者は書いてある仕方ない。
それに対して、俺は明確な反論はできないだけだ

ちなみにその3つの外部の有名なコーディング規約とは
>>433(Oracle)
>>436(Scott W. Ambler)
>>440(Sun Microsystems )
だよ。

俺の会社、みんなもそうだろうけど、
ここまで大きい会社じゃないんでね。
説得力の違いを感じるよ。
685仕様書無しさん:2013/03/31(日) 14:56:40.72
書いてあることが必ずしも正しいとは限らないじゃないか!


そういって、会社の規約を否定された。
686仕様書無しさん:2013/03/31(日) 15:06:12.77
>>683 >>684
もちろんそれは否定しないよ。
一般的な規約を併せて参考にする必要はあるだろう。
ただし>>433のOracleの規約は文の書き方の説明であってa,b,cはただの例。
規約としてa,b,cの使用がOKとは書いてない。
687仕様書無しさん:2013/03/31(日) 15:11:49.53
1文字変数なんてどうでもいいが
Oracleの規約とSunの規約って、どっちも実体はJLS規約なんじゃないの?
688仕様書無しさん:2013/03/31(日) 15:12:34.73
>>686
> 規約としてa,b,cの使用がOKとは書いてない。

残念。書いてあったw

http://www.oracle.com/technetwork/java/javase/documentation/codeconventions-135099.html#367

・Identifier Type
Variables

・Rules for Naming
Except for variables, all instance, class, and class constants are in mixed case
a lowercase first letter. Internal words start with capital letters. Variable names should
not start with underscore _ or dollar sign $ characters, even though both are allowed.

Variable names should be short yet meaningful. The choice of a variable name should
be mnemonic- that is, designed to indicate to the casual observer the intent of its use.
One-character variable names should be avoided except for temporary "throwaway"
variables.

Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters.

・Examples
int i;
char c;
float myWidth;
689仕様書無しさん:2013/03/31(日) 15:13:27.42
書いてない



書いてあった



み、みとめんぞ!
690仕様書無しさん:2013/03/31(日) 15:14:45.36
>>689
脳内ボクシング、おもしろい?
いっそプログラマやめてプロ脳内ボクサーになれば?
691仕様書無しさん:2013/03/31(日) 15:17:44.13
>>690
あれ?じゃあ


書いてない

書いてあった

認めます。

こっちの流れ?
認めるか認めないかのどっちかだと思うんだけどw
692仕様書無しさん:2013/03/31(日) 15:18:04.77
>>688
>One-character variable names should be avoided except for temporary "throwaway"
>variables.

ってのは
一時的な使い捨て変数は1文字推奨
とかじゃなくて
歴史的経緯からこういう使われ方がされてるから例外にしてやるよ
ぐらいな意味だと思うが。
693仕様書無しさん:2013/03/31(日) 15:18:41.63
>>691
そんなに脳内ボクシングが楽しいなら、一生やってなw
694仕様書無しさん:2013/03/31(日) 15:19:20.76
>>688-689
いや、さすがに書いてあったら認めるよ
ループカウンターのi,j,kはありだと思うけど
その他の一文字変数名は個人的には勘弁してほしいけどな
695仕様書無しさん:2013/03/31(日) 15:20:53.10
一文字禁止派がまともな反論できてなくて笑った
696仕様書無しさん:2013/03/31(日) 15:20:54.87
>>692
一時的な使い捨て以外は避けろって書いてあるな。avoidだし。
697仕様書無しさん:2013/03/31(日) 15:22:27.93
throw awayと書いてあるから、
ループ変数なら何でもオッケーというわけでもないな。

ほとんど意味のないダミー変数みたいなものならいいってことだろ。
5行10行とスコープがあって処理の重要なところに使われているようなら
普通はthrow awayなんて言わない罠
698仕様書無しさん:2013/03/31(日) 15:23:10.56
>>695 めくら?
699仕様書無しさん:2013/03/31(日) 15:27:39.52
普通に英語を読める人なら

>One-character variable names should be avoided except for temporary "throwaway" variables.

を「許可」とは読まないな。
一文字変数は禁止だが、あまりにもどうでもいい変数なら強制はしない、という意味だろう。
700仕様書無しさん:2013/03/31(日) 15:44:23.96
莫大な人数の不特定多数のプログラマに守ってほしい言語標準のコーディング規約だから、
歴史的経緯を優先してカウンタ変数に1文字を許さざるを得ないだろう。
そうしないとその時点で「規約違反」のコードばかりになってしまうから。

ところが開発企業内や開発チーム内で、これから書くコードのためのコーディング規約なら、
歴史的経緯は横において、これから書くコードはループ変数も含めて意味のある名前を付けましょう、
というのは組織での規則としてアリだと思う。

「言語標準の規約で厳格な禁止をされていないから、
どんな開発組織内ローカルの規約も許されるべきだ、
むしろ推奨すべきだ」
みたいな発想をするのって、よほど組織的な開発の経験がない人じゃないかな?
701仕様書無しさん:2013/03/31(日) 15:45:02.43
結局「み、みとめんぞ!」の流れw
702仕様書無しさん:2013/03/31(日) 15:45:25.43
>>692
機械翻訳な。歴史的な経緯なんか語ってないからw


変数を除いて、すべてのインスタンス、クラス、およびクラス定数は、大文字と小文字が混在されている
小文字の最初の文字。内部の単語は大文字で始まる。変数名は、すべきである
両方が許可されていても、_やドル記号($)文字をアンダースコアーで開始しない。

変数名は短くまだ有意義であると考える。変数名の選択はすべきである
こと呼び名つまり、余所目その使用の意図に示すために設計されています。
一文字の変数名は、一時的な"使い捨て"以外は避けるべきである
変数。

c、d、および文字のE;一時変数のための共通の名前は、J、K、m、nは整数のiです。
703仕様書無しさん:2013/03/31(日) 15:46:41.27
結局、一時的な使い捨てなら
OKってことなのか?

一時的な使い捨てでもNGなのか?

誰かの意見ではなく、Oracleのコーディング規約には
なんてかいてあるのさ?

わかってて言ってるけどw
704仕様書無しさん:2013/03/31(日) 15:46:47.74
>>702
common namesってのは歴史的経緯を語っていると思うが?
規約策定時での"common names"だからな。
705仕様書無しさん:2013/03/31(日) 15:47:34.22
>>704
common names = 共通の名前

歴史的経緯ってなんのこと?
706仕様書無しさん:2013/03/31(日) 15:47:45.00
>>703
おまえ、本物の馬鹿だな。このスレでの議論はいつからOracle前提になったよ?
707仕様書無しさん:2013/03/31(日) 15:48:08.60
規約策定時に決まったこと

今も変わっていない。

今でも有効。

それぐらい分かれよw
708仕様書無しさん:2013/03/31(日) 15:48:48.98
>>706
だって、俺の会社の規約を盲目的に信じるなって言うからさ。
じゃあ、有名な規約を参考にするしかないじゃないかw
709仕様書無しさん:2013/03/31(日) 15:50:02.20
英単語の意味まで変えようとしだしたぞw
710仕様書無しさん:2013/03/31(日) 15:53:37.18
>>705
たった2行のレスも読めないの?
すばらしい読解力ですね。

その読解力だから
Oracleの規約の「意味」を読めないのですね。

かわいそうに。(君の周囲が)
711仕様書無しさん:2013/03/31(日) 15:56:20.57
言語提供者による規約はより多くの言語ユーザに貢献してもらうためのツールだが、
組織のコーディング規約っていうのは、>>708みたいなバカを追い出すためのツールでもある。
その意味で、一文字変数禁止というコーディング規約は
組織のコーディング規約としての機能を十分に果たしている
という結論ですね。
712仕様書無しさん:2013/03/31(日) 15:59:59.60
本当に一文字がだめなら「"使い捨て" 以外は避けるべき」って
わざわざ書かないはずだよ。

それなのにダブルクォート付きで書いてるってことは
それは極めて重要であるということ。

使い捨てなら使っていいよとわざわざ書いてあるんだよ。
713仕様書無しさん:2013/03/31(日) 16:01:49.72
>>710
> 変数名は短くまだ有意義であると考える。変数名の選択はすべきである
> こと呼び名つまり、余所目その使用の意図に示すために設計されています。
> 一文字の変数名は、一時的な"使い捨て"以外は避けるべきである
> 変数。

これ読んで、お前は 一時的な使い捨てでも避けるべき だと思ったの?

お前にとっては、

一時的な"使い捨て"以外は避けるべき = 一時的な使い捨てでも避けるべき

なの?
714仕様書無しさん:2013/03/31(日) 16:03:20.90
>>711
社畜君?
715仕様書無しさん:2013/03/31(日) 16:04:19.04
ワロタw

701 名前:仕様書無しさん[sage] 投稿日:2013/03/31(日) 15:45:02.43
結局「み、みとめんぞ!」の流れw
716仕様書無しさん:2013/03/31(日) 16:05:28.91
お前らこっちのスレに行け。

http://kohada.2ch.net/test/read.cgi/prog/1364608889/l50
717仕様書無しさん:2013/03/31(日) 16:08:15.31
>>716 わざわざ立てたの?
718仕様書無しさん:2013/03/31(日) 16:11:10.99
>>543にあった。
719仕様書無しさん:2013/03/31(日) 16:17:01.81
このスレ的には、

組織という狭い世界の中にとどまるな。
一般的に日本のソフトウェア技術は低いところが多い。
世界の常識(この場合はコーディング規約)をしれ。

って結論で終わりだな。
720仕様書無しさん:2013/03/31(日) 16:27:17.42
み、みとめんぞ!
721仕様書無しさん:2013/03/31(日) 16:31:59.97
仕事でこれからコードを書くって人は、
社外のコードを読んで欲しいと思うね。

一流のオープンソースプロジェクトの
ソースコードなら簡単に読めるんだから。

どうせお前の会社なんて、技術力で一流に
かなう会社じゃないだろう?

そうすれば、一文字変数なんて普通に
使われてるってわかるはずなんだ。
722仕様書無しさん:2013/03/31(日) 16:33:03.14
このスレ的には、

組織という狭い世界の中にとどまるな。
一般的に日本のソフトウェア技術は低いところが多い。
世界の常識(この場合はコーディング規約)をしれ。
その上で、言語策定者によるコーディング規約の理由を考え、
自分のタスクにおいて適用すべきかどうか考えて運用しよう。
Oracleが禁止の例外としているからといって、
自分のチームでもオッケーだという短絡的な発想はやめよう。

って結論で終わりだな。
723仕様書無しさん:2013/03/31(日) 16:34:45.24
間違っても、>>721 のように多数派を盲信するような態度は取らず、
何故彼等はそのようなコーディングスタイルを採用しているのか、
自組織ではどのようなコーディングスタイルにすべきか、
広い視野で考えよう。
724仕様書無しさん:2013/03/31(日) 16:37:13.64
組織のコーディング規約のほとんどは
なぜそのようなコーディング規約を採用したかの
理由が書いていない。

理由なくてルールが独り歩きしている。
こういうのは100%アウト。

そして多くは規約を作った人が「俺が理解できないから使うな」に
なっていることが多い。

これ覚えておくといいよ。
725仕様書無しさん:2013/03/31(日) 16:38:03.14
>>723が言いたいのは
多数派を盲信するな。
少数派こそが正しいんだ。
ということ。

まあ、馬鹿だよねw
726仕様書無しさん:2013/03/31(日) 16:39:45.01
>>724
その通りで、有名オプソのスタイルだから正しいとか、
有名ベンダーの一般向け規約だから正しいとか、
技術的理由付けのないのは100%アウトだね。

覚えておくといいと思う。
727仕様書無しさん:2013/03/31(日) 16:40:14.50
多数派少数派関係なく、盲信するなでいいだろ
なんで、多数派をそんなに敵視するんだろうか?

組織には、組織の人間は多いが、
組織以外の人間は少ない。

組織にとって、多数派とは組織の人なんだけどな。
組織の人、盲信すんなよw
728仕様書無しさん:2013/03/31(日) 16:40:52.93
>>725
>多数派を盲信するな。

これは書いたが、

>少数派こそが正しいんだ。

これは書いてない。捏造するなクソ野郎。
まあ一文字変数書いてドヤ顔するようなバカは、この程度の人間ってことだな。
よくわかったよ。
729仕様書無しさん:2013/03/31(日) 16:40:52.93
>>726
OracleとかSunとか技術的裏付けがあるから
問題ないよね。
730仕様書無しさん:2013/03/31(日) 16:41:35.29
1文字変数が許される技術的理由: 社名

これ笑ったわww
731仕様書無しさん:2013/03/31(日) 16:43:22.96
一文字変数が許される技術的根拠があるということで
随分前から結論でてるんだけどな。

「み、みとめんぞ!」
732仕様書無しさん:2013/03/31(日) 16:44:14.44
>>724
なんで組織のコーディングがダメという前提にたってるの?
良いコーディング規約も悪いコーディング規約もあるだろ。
733仕様書無しさん:2013/03/31(日) 16:48:47.90
そうだな。だめなのはダメな組織だけだな。
有名で優秀な組織もあるしな。OracleやSunみたいに。
734仕様書無しさん:2013/03/31(日) 17:25:07.04
一文字禁止って言ってる人さあ
どうせまともな理由だせないんだから、素直に間違ってたこと認めちゃいなよ。
会社でも独り善がりなコーディング規約作って嫌われてんでしょ?
735仕様書無しさん:2013/03/31(日) 17:26:26.90
>>734
相当な古株でなければコーディング規約の作成になんて関われないぞ
736仕様書無しさん:2013/03/31(日) 17:43:08.03
とりあえず高度なコードを書けw

話はそれからだ
737仕様書無しさん:2013/03/31(日) 17:53:08.44
やるじゃん
738仕様書無しさん:2013/03/31(日) 18:01:26.05
Sun名義の規約とOracle名義の規約を別カウントしちゃうぐらいだから
変数の文字数なんて1文字でも2文字だと強弁できるだろw
739仕様書無しさん:2013/03/31(日) 18:17:08.57
一行目と二行目に
関連性が全くないんだがw
740仕様書無しさん:2013/03/31(日) 18:23:18.42
>>739は1文字禁止派の自演
741仕様書無しさん:2013/03/31(日) 21:10:16.09
そろそろエイプリルフールの準備するか。
742仕様書無しさん:2013/03/31(日) 22:03:39.55
>>692,>>699
思い込みで勝手にニュアンスを付加するな。
正確に訳すと、以下のようになる。

One-character variable names should be avoided except for temporary "throwaway" variables.
一文字名の変数の使用は避けるべき。ただし、一時的な「使い捨て」変数は除く。
743仕様書無しさん:2013/03/31(日) 23:26:53.39
わかりにくいコードを書くから、長くて自己説明的な名前が必要になるんだよな。
初心者が全ての行に無意味なコメントを入れるのと同じ理屈だ。
744仕様書無しさん:2013/03/31(日) 23:56:26.95
>742
なんで、一時的な「使い捨て」変数は除くんだよ?
745742:2013/04/01(月) 00:13:40.39
リンク先ページの文章書いたやつに聞け。
というか、この程度の英文まともに読めない奴らが、ああでもない、こうでもない言い合ってるようじゃ、
結論永遠に出ないだろうな。
746仕様書無しさん:2013/04/01(月) 04:28:15.26

   ̄ヽ、   _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     `'ー '´
      ○
       O

      }゙i                       「i
     ノ |               l            | ヽ
ト、    | |           |              l  {    /}
ヽ ヽ  〈、 i、              |           |.ム   / !
 ヽ ヾ,、_rL |            |          _r}∠>=‐' /
  \ : ∵爻、       ヽ |!         j゙ソ゛.: . /
     ヽ ∵ ヾk         l||!        _}i}∴ ∵ /
    \ ∵{=、,       cr炎ro     _fiヾk: :/
        ヽ∠__ノァt-、  /,仝yハ    ∠rtゝ-‐ '   と思うサソリであった
           ゞニヾハ.  }K以ムハ  //> ′
               >、ヽ }ニネネ冫:i/∠、
            /へ\ `ー八‐‐'_/' へヽ
            〃   >,才¨^¨弋ヽニニヾk
          {/,<- '/ /      \\  「|l|
           |{   トi′      > 〉 {.{l}
           |l  /7        //   !|
           {{  〈ハ}      z'_/    k!
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.
という英文になる。こんぐらいわかっとけ。
748仕様書無しさん:2013/04/01(月) 08:03:47.84
http://d.hatena.ne.jp/tonotonotono/touch/20041111

2004年にはこんな珍獣もいたみたい
749仕様書無しさん:2013/04/01(月) 09:02:33.58
>>747
>except for Cは「Cは除く」よりは「Cの場合はその限りではない」のほうが原語の意味に近い。

勝手に自説に有利なように訳語を捻じ曲げるな。
そういう意味になる場合もならない場合もなる。
特にそういうニュアンスを示す表現が前後に無いのであれば、
except forはプレーンな「除く」という言葉を使うべき。
750仕様書無しさん:2013/04/01(月) 10:04:55.71
>>747
>もし「Cは除く」ぐらい強い除外をするのであれば、

ほとんど英語じゃなくて日本語力の問題だな。
「除く」は単に除外の意味であって、強いも弱いも無いよ。
751仕様書無しさん:2013/04/01(月) 11:18:42.72
>>747
英語につよくてカッケーです(笑)
752仕様書無しさん:2013/04/01(月) 11:54:17.90
まあどっちにしても除かれてるのなら使っていいってことじゃん。
753仕様書無しさん:2013/04/01(月) 12:11:16.23
そう。
この文が意味するところは、それ以上でもそれ以下でもない。
754仕様書無しさん:2013/04/01(月) 22:10:17.14
いや、歴史的経緯でしかたなく見逃してあげる。というニュアンスが含まれているのだよ
755仕様書無しさん:2013/04/01(月) 22:13:05.82
>>750
ナイス中学英語!
756仕様書無しさん:2013/04/01(月) 22:14:50.26
しょせん参考にすぎないオラクルコーディング規約で「使っていい」とかマジで思考停止してるんだね。
なんという馬鹿w
757仕様書無しさん:2013/04/01(月) 22:20:34.10
元々が社内ルールで禁止されている!じゃなかったっけ?
758仕様書無しさん:2013/04/01(月) 22:33:35.22
「社内ルールで禁止されている」で思考停止しているから
その他のルールを見てみましょうねってなったわけだ。
759仕様書無しさん:2013/04/01(月) 22:38:06.69
で、終着点は756?
どう突っ込んだらいいのやら。。
760仕様書無しさん:2013/04/01(月) 22:47:36.37
756が一文字禁止派の結論か
結局み、みとめないぞ!だったな
761仕様書無しさん:2013/04/01(月) 22:49:56.57
思考停止馬鹿はこいつが一番最初かな。

54 名前:仕様書無しさん[sage] 投稿日:2013/03/24(日) 14:47:42.69
大体仕事の場合は、一文字の変数名はカウンタを含めて、殆どコーディング規約で禁止されている。
762仕様書無しさん:2013/04/01(月) 22:53:31.34
おもしろいなこのスレ
新人に読ませたい
763仕様書無しさん:2013/04/01(月) 22:59:04.18
仕事で決まってるからって、思考停止しちゃだめだよ。

もっと広い範囲で調べなきゃ。
764仕様書無しさん:2013/04/01(月) 23:15:40.21
>>754
訳者による過剰な深読みって奴だな。
765仕様書無しさん:2013/04/01(月) 23:33:40.90
でも道路標識の「ただし軽車両、原付を除く」は明確な許可だもんね。
「ただし一時的な使い捨て変数を除く」が使っていいことにならないなら日本語の認識がおかしいね。
766仕様書無しさん:2013/04/01(月) 23:39:32.20
「専用スレがあるものは専用スレを使用する」という明確なルールがあるのに、
従わずこのスレを荒らし続けるキチガイが日本語の認識を語るなど
笑わせてくれる。
767仕様書無しさん:2013/04/02(火) 00:14:22.31
向こうのスレに流れをコピペしておいたから、以後向こうでやれ
768仕様書無しさん:2013/04/02(火) 00:21:34.31
それが人にものを頼む態度だと思ってるのか?
769仕様書無しさん:2013/04/02(火) 01:06:48.88
一文字禁止スレみたら英語とハムスターの話で持ちきりだった
770仕様書無しさん:2013/04/02(火) 02:33:05.14
話変えるけど

例えば
if(a==60 || a==70 || a==80 ||……){
 if(b==120){
 なんかの処理
 }
}
みたいなコードを

array[] = {60, 70, 80,……}
for(int i=0; i<array_length; i++){
 if(a==array[i] &amp;&amp; b==120){
 なんかの処理
 break;
 }
}
みたいに書いてほしいな

片っ端からif文で条件を打ち込まれると読みにくい時がある
771仕様書無しさん:2013/04/02(火) 03:00:03.87
>>770
直感的にループじゃないものをループにするなよ。

そういうときは

array[] = {60, 70, 80,……}
if(in_array(a, array) && b==120){
 なんかの処理
 }
}

こんなかんじだろ。

もしくは /^(60|70|80|・・・)$/ みたいな正規表現にするとか。

言語の標準関数にないなら外部ライブラリ使うか自分で作ればいいだけなのに
たまに言語標準機能だけで頑張ろうとする人いるよな。
772仕様書無しさん:2013/04/02(火) 03:01:09.18
多機能メソッドは個々の機能を別メソッドに委託するだけのメソッドにしてほしい
メソッド単位でUTできないと分岐が多くなってしぬわ
773仕様書無しさん:2013/04/02(火) 03:02:34.73
ぶっちゃけ一文字変数名云々より、1メソッドにreturnは1つしか書いてはいけないみたいな糞ルールとかのほうが数百倍きつい
774仕様書無しさん:2013/04/02(火) 03:12:09.53
>>770
俺Javaマだけど、俺ならその最初のifをprivateなstaticメソッドとかに置く事が多いかな
isナンチャラ(a)みたいな、なにを判定してるかをコメントで説明せずメソッド名で説明するような感じにコードで書く
staticに置くのは、インスタンスに依存しないユーティリティ的な処理だから

もしくは、aがオブジェクトで、判定はOの実装に依存するなら、oのクラスに判定処理を定義してあげるってのもありだと思う
775仕様書無しさん:2013/04/02(火) 03:25:39.54
>>774
これ書こうとしたらもう書いてあった
776770:2013/04/02(火) 03:41:28.84
>>771 >>774
なるほどー参考になったよ、ありがとう
777仕様書無しさん:2013/04/02(火) 03:47:11.50
>>770
>>171でも言われてるけど、基本的な構文を利用してアクロバティックに実装するのは、
意図が読み取りづらくなるからできるだけ避けたほうがいいと思う(レベルの低いマが関わる環境だと得に)。
慣れてる人はその手の実装みてもすぐ意図を理解できるから困らないけど、不慣れな人だとそこで思考が一旦停止し兼ねない。

もちろん、それ(ループによる判定)だけを行うメソッドとして定義されてたら混乱はしないから問題ないよ。
そういう書き方が問題になるのは、長い処理の一部に、そういう書き方のコードを混ぜちゃうケースね。
まぁ、別メソッドにわけるなら、素直に書いたほうが後々の確認や修正も楽だと思うけどな。

private static boolean isReasonable(int a) {
 if (a == 60)
  return true;
 if (a == 70)
  return true;
 if (a == 80)
  return true;
   :
 return false;
}

みたいな

一つのifに詰め込める判定処理は、必ず「なにを判定してるのか」っていう名前が付けれる処理がいくつかあるはずだから、
可読性が悪いif文になってる場合は、判定だけをメソッド分割すると、後々見直すときやテストで理解しやすいコードになるよ。
メソッド単体でのテストもしやすくなるし。
778774:2013/04/02(火) 03:49:36.13
aがなんか途中でOとかoになってるけど、脳内補完で…(´・ω・`)
779仕様書無しさん:2013/04/02(火) 03:52:03.64
>>773
それで思い出したけど、メソッドの中のコードを書く順番

function foo(value) {
 1. 引数などのチェック

 2. 引数およびインスタンス変数を”参照だけ”して処理を行う

 3. インスタンス変数を書き換える

}

このパターンを守れない場合もあるけれど、
原則としてこの順番で書くようにするといいよ。
逆に言うとこの1〜3を混ぜて書かないほうがいい。

理由は、1でチェックを行うので2の処理を行うときは
不正な値がないことを保証できる。

2では、参照だけして処理を行う。処理結果はローカル変数に入れておく。
この時点でインスタンスの状態を変更しないことが重要。
なぜなら2の処理の途中でインスタンスの状態を変更した後で、実行時エラーが起きた時、
適切に処理しないとインスタンスの状態がよくわからないことになってしまうから。

そして3で、ローカル変数に記録された結果をインスタンス変数に代入する。
ただの代入なので実行時エラーが発生する確率は低い。
トランザクションのコミット処理みたいなもんだね。
2で処理を実行するけれどデータは反映されない。3をやって初めてデータが反映される。
780仕様書無しさん:2013/04/02(火) 04:05:26.05
>>777
それもダラダラして長いんで、

private static boolean isReasonable(int a) {
 array[] = {60, 70, 80,……} ;
 return in_array(a, array);
}

の方がいい。

isReasonableっていうのは、何の判定か?を示す意味がある、
in_arrayは判定処理そのものを簡略化する意味がある。
使い方の意味が違うんで両方やって良い。

あと、in_arrayであれば、ユーティリティクラスに
static、publicで定義するのでテストも書きやすい。

in_array、つまりisReasonableの処理のうち数値配列の”定義”を除いた
処理の部分がテスト済み状態になるので残りのテストが減る(不要になる)

個人的にin_arrayをテストしたならば、上に書いたisReasonableはテストは必要ないと思うな。
なぜなら、array[]の定義内容をテストすることになるわけで、
単にisReasonableとテストコードの配列内容が一致しているか?(=ちゃんとコピペしたか?)
というくだらないテストになるから。
781773:2013/04/02(火) 04:10:12.52
>>779
チェックが頭なのはそうだと思うけど、インスタンスフィールドの変更タイミングはケースバイケースじゃないかな?
インスタンス変数の変更の途中で例外抜けがあり、
かつメソッドの外で復旧するような特殊な場合ならそういう処理にする必要はあると思うが、
そもそも復旧できる例外ならtry-catch句を内部にもってその場で復旧を試みるべきだろうし、
そうでないケースなら、インスタンス状態を保つこと自体に意味ない事の方が多そうな気がする
(意味があるような場合、クラス設計とか別の部分にもっと大きな問題があると思う)

なので、2、3は、必ずそのケースにする必要はないと思うな

あと、773は、結果保持用のローカル変数を用意して、分岐して分岐して保持用変数に値をつめて、
最後に保持結果を返す、みたいな糞コードをdisってるんだ…
結果が判明した時点でreturnすれば無駄なifネストやら else if とか書かなくてすむのに、
糞ルールのせいでひたすらに読み辛いコードになる、みたいな
782仕様書無しさん:2013/04/02(火) 04:29:47.65
>>780
いや、なんつーか、そのレベルの実装の良し悪しなんて好みのレベルだし、
可読性に関わるレベルでもないからどうでもいい話だと思うぞ。
JavaやらC#やら使うなら、そのあたりはそもそもコレクションに詰めておいて
containsみたいな処理でやってもいいわけだし、俺々関数を用意するような部分でもない。

ユーティリティ処理を用意して更にコードの共通化を図れ、みたいな話になっちゃうから
この話題の元々の焦点「読み辛いifをどう書き直すか」って所からは少しずれてきてるんじゃないかなって感じる。
783仕様書無しさん:2013/04/02(火) 04:34:53.23
なんや一気に良スレになったな
784仕様書無しさん:2013/04/02(火) 06:02:38.17
取り敢えず、インデントはどんなルールでもいいからキッチリつけないと超高確率でバグを量産するハメになる

インデントルールは、行頭のインデントはタブでそれ以外の桁揃えはスペースってやっとけば読む奴が読みやすいタブ幅に合わせて読めるから一番"面倒が無い"
インデントをスペースでやると、書いた奴のインデント幅でしか読めない(桁揃えが混ざるとインデント幅の一括変更が完全な再整形でしか出来ない)
桁揃えにタブ使うと、一々元のタブ幅確認して合わせなきゃ表示が崩れる
インデントにタブとスペース混在させてると最悪で、読む奴が一々元のタブ幅確認しなきゃいかんし、書いた奴のタブ幅でしか読めない

「俺様と同じインデント幅・タブ幅しか許さん」って意見が頭オカシイと思うなら、行頭のインデントはタブでそれ以外の桁揃えはスペースが一番他人にやさしい
他人に読ませる気がないならどんなルールでも良いけれど、他人に読ませる気が有るなら他人にやさしいインデントルールを使うべき
785仕様書無しさん:2013/04/02(火) 06:19:24.11
配列は遅いから使うなとか言われてた頃が懐かしいな
786仕様書無しさん:2013/04/02(火) 08:46:15.79
むしろIDE使ってるならコードフォーマットを手作業でやるな
そんな作業機械にやらせりゃいい
インデントの調整とか俺々コードスタイルとかは時間の無駄

どうしても手作業での整形が必要なコードの場合、
整形しないと読みづらくなるコードを書いてしまった事を悔やみながら
部分的にフォーマッター切って整形しよう
787仕様書無しさん:2013/04/02(火) 22:22:43.39
インデントはコードを見やすくするために行うものであって、
インデントすることが目的じゃない。

コードフォーマッタでやる機械的なインデントが
必ずしも正解(見やすい)とは思わないんだよね。
めちゃくちゃなのを一気になおすのにはいいけれど。

例えば、関数定義の行は { で改行いれるというよくあるルールに従うとこうなるけど

obj.addCallback(function (a, b, c) {
 いういろ
 いういろ
 いういろ
});

もしクロージャの中身が短くてたくさん並べるならこっちのほうがいいでしょ?

obj1.addCallback(function () { return a; });
obj2.addCallback(function () { return b; });
obj.3addCallback(function () { return c; });

もしこれをフォーマッタにかけるとこうなる

obj1.addCallback(function () {
 return a;
});
obj2.addCallback(function () {
 return b;
});
obj.3addCallback(function () {
 return c;
});
788仕様書無しさん:2013/04/02(火) 22:24:21.35
場合によってはこうなるかもしれない。

obj1.addCallback(
 function () {
  return a;
 }
);
obj2.addCallback(
 function () {
  return b;
 }
);
obj.3addCallback(
 function () {
  return c;
 }
);
789仕様書無しさん:2013/04/02(火) 22:56:16.40
いちいち変数に代入しまくるのやめてください(^q^)
790仕様書無しさん:2013/04/03(水) 01:26:00.50
>>787
>コードフォーマッタでやる機械的なインデントが
>必ずしも正解(見やすい)とは思わないんだよね。

だからフォーマッタ使えない、じゃなくて、
プログラマならフォーマッタを改良しましょうね。
791仕様書無しさん:2013/04/03(水) 01:49:11.47
短いルーチンはインデント無しでエディタで書いてコピペしちゃうな
視線の移動は少ないほうが良い

同じ段に一行しかなくて、右側がはみ出ているとか馬鹿みたいだから
s/\t/ /g
s/^ *//
と同じことをしょっちゅうやってる
792仕様書無しさん:2013/04/03(水) 01:50:28.15
おっと、もちろんセーブはしないよ
793仕様書無しさん:2013/04/03(水) 02:55:08.32
これからコード書く奴に勧められる事書けよ・・・
IDEのフォーマッタに任せる or 変則的なルールを使わずインデント使う、とかさ
794仕様書無しさん:2013/04/03(水) 03:27:22.93
フォーマットルールを書き出してドキュメント化しても守れないどころか読む能力すら無い奴の方が多いし
「俺が見やすいと思うからルールを守らない」みたいな馬鹿まで出てくる始末
機械的にやるのは、そういう人による判断なんかを介させないって意味ですごく重要

>>787
目先しか見てない人には伝わらないかもしれないけど、
内容に合わせてフォーマットルールを増やすとか誰も幸せになれんぞ
全部文書化してメンバー全員に徹底できるレベルなら構わんが、ニュアンスでそういう事やるのはだめだろ

つか、見やすいと思えないならまずフォーマッターの設定を見直そう
フォーマッターで対応できないようなフォーマットルールを、メンバー全員に徹底するとか夢物語だ
795仕様書無しさん:2013/04/03(水) 06:44:35.34
>>794
その通り
ルールがあるんだったら守る。議論しない
議論している間にコーディングは終わる

自分流をやりたければ自分の目の前だけにする
具体的には、
インデントがあると読み難くて嫌になるなら
全行を左揃えにする仕組みを
自分用に
ととのえる。そんなに難しくない

インデントを付けるのは、人ではなくコンピュータ任せなのだから
インデントを外すのもコンピュータに任せる
796仕様書無しさん:2013/04/03(水) 08:52:21.56
>>790
> プログラマならフォーマッタを改良しましょうね。

無理。どの書き方が見やすいかは
場合によってバラバラなので
ルールを決められない。
797仕様書無しさん:2013/04/03(水) 08:58:00.12
>>794
> フォーマッターで対応できないようなフォーマットルールを、メンバー全員に徹底するとか夢物語だ

典型的な手段と目的が逆になっている例。

見やすく書くのが目的であって
フォーマットルールを作るのが目的ではない。

見やすく書くというのは技術。
技術力が高くなれば、自然と見やすい書き方ができる。

見やすい書き方が出来ない奴は技術も低いわけでバグも多いし
コードも無駄が多く冗長。

そういうのはコードレビューするわけで
見やすい書き方の指摘もそこでやる。
798仕様書無しさん:2013/04/03(水) 09:12:24.79
コミット用共通フォーマッタと各自マイフォーマッタを持っておいて、チェックアウト時にマイフォーマッタでフォーマット、コミット時に共通フォーマッタでフォーマットすれば皆幸せ。
799仕様書無しさん:2013/04/03(水) 10:33:42.69
で、少しずつコメント位置がずれていくw
800仕様書無しさん:2013/04/03(水) 23:26:51.84
俺々フォーマッターは個人開発でやる分にはいいけど、共同開発は自分用フォーマットルールとか作ってはいけない。
共通フォーマットルールの設定が提供されてないプロジェクトの場合は、グループと相談して導入を検討したほうがいい。

あと、見やすいとかそういうくだらない理由で、手動でコードの整形するのはマージの邪魔になるだからやめたほうがいい。
自動整形がかかった状態でも可読性高いコードは書ける。書けない奴はスキルがない奴だ。
これからコードを書くって人は、手動で整形なんてやるべきじゃない。

手動で整形する必要が全く無いとは言わんが、そういうレアケースならコメントで部分的に制御する仕組みとか使えばいい。
だが、そういうテクニックはこれからコード書く人が率先して覚えておくべき事ではない。
801仕様書無しさん:2013/04/03(水) 23:53:05.01
正直一文字変数の話よりどうでもいい
802仕様書無しさん:2013/04/04(木) 01:44:00.21
>>797
理想論だね。20人中10人がレベル低かったら
10人分のコードレビューすんのか?時間的に無理だろ
803仕様書無しさん:2013/04/04(木) 01:45:57.83
フォーマットは何が正解で何が間違いかというはっきりとした答えがないもの。

たとえば一行の文字数を考えて見ればいい。

一行80文字というルールを作る。じゃあ81文字だったら?
強制的に改行を入れたほうが見やすいのか?
そうとは限らないだろ?

1文字ぐらいなら見逃したほうがいいし、もしかしたら
インデントが深すぎるという証拠なのかもしれない。
だとしたらコードの書き方を工夫するほうがいいかもしれない。

インデントが深すぎるという問題を直さないで、
フォーマッターにかけて、80文字以内だからOKです。でいいと思う?

見やすく書くのが目的であって、ルールを厳守するのは目的に反するんだよ。
もちろん、インデントはスペース4つで、一行の目安とかはいるけど、
フォーマットは厳密に守るべきものじゃないでしょ。

そもそもコードのフォーマットって難しい技術か?
動くコードを書くことに比べたら相当簡単だと思うんだが?
動くコードが書ける人がコード書いたら、コードも最低限のフォーマットになってるはず。
それすらできない人間は教育するか切り捨てたほうがいいでしょ?
804仕様書無しさん:2013/04/04(木) 01:48:07.34
>>802

> 理想論だね。20人中10人がレベル低かったら
> 10人分のコードレビューすんのか?時間的に無理だろ

コードの最低限度のフォーマットもできない
素人が20人中10人もいて、それでまともに開発できると本気で思ってるの?
明らかにデスマになることが目に見えてるよ。

20人中10人が素人のプロジェクトに、どうぞフォーマッター導入してください。
コードレビューもないけれど、フォーマットさえできていれば
君は大丈夫だと思うのでしょう?
805仕様書無しさん:2013/04/04(木) 02:12:07.09
>>803-804
フォーマットができないやつは
全員低レベルっていう前提がおかしいだろ
少しは頭使ってくれ
806仕様書無しさん:2013/04/04(木) 02:20:09.51
フォーマットができないやつは 全員低レベルであってますよ?
見やすいコードの書き方が書いてある本を与えても理解できないレベルなんでしょ?

フォーマットすらできない人間のプログラムが
きちんと動くとかありえませんね。
807仕様書無しさん:2013/04/04(木) 02:33:02.58
フォーマッタすら制御できない人間のプログラムが
きちんと動くとかありえませんね。
808仕様書無しさん:2013/04/04(木) 02:38:57.50
一行80文字という決まりだけど、
一文字だけ多かった今回は改行いれないほうが見やすいなぁ。
読みやすさ重視で今回だけ例外にしちゃえ。

ってことができるフォーマッターの制御方法教えて下さいw

コンピュータは汚くても何の問題もない。
人間が見やすいと感じるかをコンピュータが判断しろと?
AIが必要になってくるよw
809仕様書無しさん:2013/04/04(木) 02:57:48.02
久しぶりに来たらフォーマット論争になってる
810仕様書無しさん:2013/04/04(木) 04:47:20.54
また隔離スレ立てるかw
811仕様書無しさん:2013/04/04(木) 05:40:10.14
>>808
微妙なラインが有る場合はそのまま放置だろ

俺々フォーマッタと共通フォーマッタ使う場合、見づらいって文句言う奴は俺々フォーマッタ弄って直せばいいだけ
共通フォーマッタを全員の好みに合致するようになんて考えだしたら何の意味もない
最適なフォーマットアルゴリズムを求めて俺々フォーマッタに学習機能だの何だの搭載したいならすればいい
つか情報屋のくせにAIに夢見過ぎてないか?
812仕様書無しさん:2013/04/04(木) 05:46:27.21
フォーマットするのは簡単な作業で
フォーマットすらできんヤツにロクなコードを書けない。

どちらも「明文化されたフォーマットルールに従って」という前提。
具体的なルールも示さない>>803を納得させるフォーマットなんて
どんな超絶ハカーにも無理w
813仕様書無しさん:2013/04/04(木) 06:32:00.85
この話いつまでやるんだよ…
814仕様書無しさん:2013/04/04(木) 06:55:18.23
>>803みたいのが、他メンバーには読めないクソコードを書くんだよなー。
で、本人は自分は他のメンバーより「読みやすい」コードを書いて
チームの技術レベルを上げていると勘違いしているというww
815仕様書無しさん:2013/04/04(木) 07:36:49.98
>>814
絶対そういうタイプだよな
自分はできる、他人はできない、できないやつは切り捨てとか
そういう考えのやつって本当に扱いづらい
この業界はそういうやつが本当に多いんだよな…
816仕様書無しさん:2013/04/04(木) 07:59:27.30
切り捨てられる低能って可哀想だね...
817仕様書無しさん:2013/04/04(木) 08:08:26.86
>>806
技術は一流、書き方は俺流ってやつたくさんいるじゃん
そういうのと議論しないで済むからフォーマッターは有用なんだよ
818仕様書無しさん:2013/04/04(木) 09:24:45.67
みんな、くだらないことで議論するのはやめようよ

>>800さんも言ってるよ
>あと、見やすいとかそういうくだらない理由で、
819仕様書無しさん:2013/04/04(木) 09:39:57.79
フォーマットなんてプロジェクト毎の規約にだまって従えばいいじゃないか。
なければ、メジャーなものを参考にして真似すればいいし。
色々ソースをいじってれば、流儀も様々だから、わざわざ俺流にこだわる程アホらしいことはないぞ。
それとも皆まともにインデントも出来ない新人レベルの人とばかり仕事してるのか?
820仕様書無しさん:2013/04/04(木) 10:49:46.36
int zero = 0;
はやめろ
821仕様書無しさん:2013/04/04(木) 12:02:37.85
それ面白い
822仕様書無しさん:2013/04/04(木) 12:21:35.29
読み進むと zero++; だの zero = 1; だのが出てきて頭が痛くなるパターンですねわかります
823仕様書無しさん:2013/04/04(木) 13:07:52.02
if( zero != 0 ) zero=0;
824仕様書無しさん:2013/04/04(木) 21:34:31.03
if要らねえwww
825仕様書無しさん:2013/04/04(木) 22:34:09.59
if( $sex -eq " daisuki" ){
echo " yari man"
exit 0
}
else{
echo " uso tuki"
exit 1
}

(○´U`○
826仕様書無しさん:2013/04/04(木) 23:49:06.04
>>825
リテラルをロジック内にハードコードすんな
827仕様書無しさん:2013/04/05(金) 00:10:22.70
>>819
フォーマットはメジャーな規約に合わせるってのは賛成だよ。
だけど、参考程度にに留める。絶対に守られければいけないルールじゃない

例えば○○の後に改行を入れる(見やすくするために)という規約があっても
改行を入れないほうがもっと見やすくなる場合が稀にある。
そういう場合には規約を守らないほうがもっと優れたコードになる。

規約を守らないほうが見やすいコードになるってのは例外的なので
フォーマッターでそこまで対応するのは不可能。
せいぜい特殊なタグで囲まれた領域はフォーマッターの処理対象外にするぐらい。
(特殊なタグで囲むという手段はタグが邪魔で見にくくなるので根本的解決にならない)

だからフォーマットは最低限の目安的な規約を作って、見やすくなるならば規約を守らなくてもOK
フォーマッターは原則として使わない。(使うのはゴミコードを修正するときだけ)
828仕様書無しさん:2013/04/05(金) 00:11:14.49
>>817
> 技術は一流、書き方は俺流ってやつたくさんいるじゃん
いません。誰ですか?名前言えますか?
829仕様書無しさん:2013/04/05(金) 01:28:29.16
技術も俺流ならいっぱいいる
830仕様書無しさん:2013/04/05(金) 02:41:28.57
>>827
それをオナニーと言う
831仕様書無しさん:2013/04/05(金) 02:43:01.70
本当に技術が一流の奴なら書き方もしっかりしてると思う
832仕様書無しさん:2013/04/05(金) 03:58:17.25
まともなフォーマットでかけない奴は無能といったのが
よっぽど気に触ったのかねぇ?
833仕様書無しさん:2013/04/05(金) 05:06:52.19
>>827ってプログラミングはじめて2年目ぐらいによくなる病気にかかってるね。
834仕様書無しさん:2013/04/05(金) 06:32:02.70
>>828
viのソースとか、確かに技術は一流だけどスタイルは癖があるな。
というわけで、美流上位。
835仕様書無しさん:2013/04/05(金) 20:50:07.84
>>833
自分なりのこだわりが出来てくると、やけに頑固になる奴いるな。
下にそういう奴がいるかなり面倒くさいw
836仕様書無しさん:2013/04/05(金) 21:10:03.16
プロ2病
837仕様書無しさん:2013/04/05(金) 22:54:02.77
http://qiita.com/items/e65c8847e57a5329f336
id_10 =
books
 .project(books[:category_id])
 .group(books[:category_id])
 .having(books[:id].count.eq(10))
 .take(1)

categories
 .project(Arel.star)
 .where(categories[:id].eq(id_10))
# => TypeError: Cannot visit Arel::SelectManager

categories
 .project(Arel.star)
 .where(categories[:id].eq(id_10.ast))
 .to_sql
# => SELECT * FROM "categories" WHERE "categories"."id" = SELECT "books"."category_id" 省略

たとえばこんなコードな。整形したらこうなるだろう。
id_10 = books.project(books[:category_id]).group(books[:category_id])
 .having(books[:id].count.eq(10)).take(1)

categories.project(Arel.star).where(categories[:id].eq(id_10))
# => TypeError: Cannot visit Arel::SelectManager

categories.project(Arel.star).where(categories[:id].eq(id_10.ast)).to_sql

見ての通り前よりもコードが見難くなってる。
フォーマッターを使ったことがあれば、こうなることぐらいわかるだろう。
それがわからないで、機械整形(機械翻訳みたいなもんw)に任せられる奴は
ほんとうの意味で綺麗なコードを書けないのだろう。無頓着なだけ。
838仕様書無しさん:2013/04/05(金) 23:01:55.52
>>834

viですか? vimですか?両方出すのでどちらでもいいですけど。

http://ex-vi.sourceforge.net/
http://ex-vi.cvs.sourceforge.net/ex-vi/ex-vi/

vim
http://vim.svn.sourceforge.net/viewvc/vim/vim7/src/main.c?revision=1889&view=markup

一体これのどこがスタイルに癖があるのでしょうか?
839仕様書無しさん:2013/04/05(金) 23:11:07.62
>>837
メソッドチェーン馬鹿。
構造があるかの様に整形しないと理解しにくいコードを、メソッドチェーンで書く方が悪い。
これはフォーマットの問題じゃないよ。
840仕様書無しさん:2013/04/05(金) 23:17:48.81
>>839
いいですか? 今はフォーマッターの話をしています。
ガキ臭いから話のすり替え早めましょう。
メソッドチェーンが世の中で使われている以上その批判は的外れにしかなりません。


では本題。メソッドチェーンを使った場合、
見やすいコードがフォーマッターで崩れます。

間違っていますか?
841仕様書無しさん:2013/04/05(金) 23:23:43.58
>>840
> では本題。メソッドチェーンを使った場合、
> 見やすいコードがフォーマッターで崩れます。
これが間違い。
メソッドチェーンが悪いのではなく、分かりにくくなるようなコードでも
何でもメソッドチェーンで書く人間が悪いのだよ。

んで、フォーマッターの話をしたいのはお前だけ。
842仕様書無しさん:2013/04/06(土) 00:24:21.86
>>833
2年目と言うよりは2年毎にかかる病気だと思うよ。
まあそうやって成長していくもんだと思うが。
843仕様書無しさん:2013/04/06(土) 01:07:01.66
フォーマッターを使っている人は
a     = 123
bbbbb  = 4568
ccc   = 90

みたいにコードが=で綺麗に揃ってて見やすいんだよね。
なぜならそういうなるようにフォーマッターをカスタマイズするから。
フォーマッターに出来ないことはないからね。

フォーマッターでイコールがずれるなんてないない。
逆に揃っちゃう。

フォーマッターを使ってる人と
使ってない人ではコードの見やすさが違う。

このようにイコールで揃った見やすいコードは
フォーマッターを使っているからでしょ。


えぇ、全てわかっていていってますが何か?
844仕様書無しさん:2013/04/06(土) 01:17:34.89
https://github.com/khiltd/Abacus

コロンやイコールの位置で揃えてくれるツール
揃ってないのと揃ってるのでは
やっぱり揃ってるほうが見やすい。(リンク先に比較画像あり)

でもこういうのはエディタのプラグインだから
成り立つのであって、フォーマッターで制御は不可能だろうね。
845仕様書無しさん:2013/04/06(土) 01:57:55.36
比較画像は意図的過ぎる
そういう風に書く奴いるんだよなぁ
何故見やすいと思っているのか分からないんだが
代入の左右の式を離すと追いかけるのが面倒だからあまり離さないで欲しいんだけどね
846仕様書無しさん:2013/04/06(土) 03:59:46.33
>>843,844
ん? コロンやイコールの桁揃えは、エディタで(手作業で)編集するものではないのかな。
そのくらいのコードに対する配慮は、経験を積んだプログラマなら当たり前だと思う。
他人様の書いた大量の汚いコードを引き継いだ時に、一括整形を目的として
フォーマッタを利用するのはアリだと思うけど、今回の話題は自分のコードだよね。

ちなみに、自分はインデントはタブのみ、タブ幅4文字、かつ80桁以内というスタイル。
 http://play.island.ac/codepaste/code?id=27
847846:2013/04/06(土) 04:02:47.17
>>846のカキコについてアンカにミスがあったので訂正

X: >>843,844
O: >>843
848仕様書無しさん:2013/04/06(土) 04:25:42.19
>>837
そういうフォーマッタを自分で書けばいいだけ。
君、プログラミングって知ってる?
849仕様書無しさん:2013/04/06(土) 04:30:13.38
まさか、
AST見てメソッドチェーンが設定値以上ならば、
インデントレベルを上げて
1つのメソッド呼び出しを1行に分割して
出力する、
程度のコードも書けないでドヤってるの?
850仕様書無しさん:2013/04/06(土) 04:34:06.22
>>846
>ん? コロンやイコールの桁揃えは、エディタで(手作業で)編集するものではないのかな。

ツールでできることをわざわざ手でやるバカ発見w
851仕様書無しさん:2013/04/06(土) 05:21:10.72
>>849
ASTだけを見ればコード生成できるのは、コードジェネレータの場合だよ。
コードフォーマッタを設計するには、コメントの整形(桁揃え)も検討しないとね。
もちろん元のコードスタイルをできるだけ壊さないよう配慮して整形しなければならない。
また、すでに>>787,788が指摘しているように、コードを美しく整形するには、
論理的な判断というよりもケースバイケースで対処する人間的な感性が必要になる。

こんなこともあるから、>>844のようなエディタのプラグインを除けば、
全自動でコードを清書してくれるフォーマッタの設計って、とっても難しい課題なんだけどなあ....
852仕様書無しさん:2013/04/06(土) 05:23:56.63
>>851
>ASTだけを見ればコード生成できるのは、コードジェネレータの場合だよ。
>コードフォーマッタを設計するには、コメントの整形(桁揃え)も検討しないとね。

お前、フォーマッタ実装したことないだろ?ぷ
853仕様書無しさん:2013/04/06(土) 07:33:59.34
人間が手動で書くコードはパターンや判断基準がある
その程度のフォーマッタを書けないやつは廃業したほうがいい
854仕様書無しさん:2013/04/06(土) 09:10:52.44
>>840
メソッドチェーンを綺麗に整形するルールを書けばいい
>>852
851がトンチンカンなこと言ってるのは同感だけど、ルールがシンプルなら構文木の解析は必須じゃないからAST持ってるかは微妙じゃね
855仕様書無しさん:2013/04/06(土) 09:14:03.56
糞汚いコードを書く馬鹿でも、フォーマッターで最低基準に揃えれるメリットの方が
自称天才()マが素晴らしいコードをフォーマッターで並に戻されるデメリットよりも優先されることだわ
なぜなら、ウンコーダーにも解析しやすいコード書いてもウンコーダーは読み解けず適当に見繕ってコピペするだけだが、
素晴らしいコード書けるくらいにスキルがある奴なら、多少汚いコードでも読み解くくらいできる

個人開発でコードフォーマットを徹底するのは存分に拘るべきだと思うが、
仕事で共同開発する場合は、汎用のフォーマッターを超えたコードの整形は邪魔以外の何者でもない
扱い辛い技術者カテゴリに所属するような、ちょっとアレなタイプのマとして扱われる人になってしまうだけ
評価に繋がらない部分に拘るのは時間の無駄だし、独りよがりのコードになってたら本末転倒
他の人間から影で「(あいつまた変な手動整形頑張ってるよ…)」って思われるだけ

そんなとこに時間かけるより、UTの実装や重複コードをなくしたりするような
リファクタリングに時間をかけたほうが数百倍メリットあるわ
856仕様書無しさん:2013/04/06(土) 09:48:17.39
>>855
自称天才マはチーム開発というのが全然見えてないんだよね
経験やスキルが足りないプログラマがいないプロジェクトなんてめったにない
自称天才マは常に自分中心で
スキルが低いやつは切り捨てればいいとか言い出す始末だし
857仕様書無しさん:2013/04/06(土) 10:02:24.77
>>854
> メソッドチェーンを綺麗に整形するルールを書けばいい

だからそのルールがケースバイケースだって言ってるんでしょ。

コードの綺麗さの判断というのは人間の感性の問題だから、
それをルール化することは出来ないんだよ。

人によって改行入れる場所さえ違っていたりするわけで
そういうものにルールを作るのは不可能

> AST見てメソッドチェーンが設定値以上ならば、
こういうのだって、設定値+1の場合はどうなる?
境界線付近では分割しないほうが見やすい場合があったりするわけで。
858仕様書無しさん:2013/04/06(土) 10:06:26.37
>>856
チームの話については今は関係ないよ。


コードのフォーマットは、フォーマッターで絶対遵守な規約にするのではなく、
最低限の目安を作って、見やすさのためなら例外もあり
という規約の方がいい。これを皆共通の規約として守りましょう。って
話だから。

チーム開発だからね。規約は守りましょうw


結局のところ一文字変数と同じ話だよ。特定の場合において
例外はありというルールもルールとしても問題ない。
859仕様書無しさん:2013/04/06(土) 10:22:14.38
>>857
だからそれをフォーマッタに反映させればいいじゃん
>>837の前者のようになるように

>>858
チーム開発はいま関係ないといいながら規約の話出すのは何なん?
チーム開発に規約はあり、フォーマッタはなし、
とかただのおまえの主観であって根拠がない
860仕様書無しさん:2013/04/06(土) 10:28:35.30
1. ifとforを多用したコードを書くのはやめよう。よく使う処理は既に汎用的なものがないか調べよう。
 判定や繰り返しは別の解決法がないかを考えよう。
 ただし再帰はバグの温床だから、ループの変わりに使うのだけは気をつけて。

2. 重複コードを書くのはやめよう。
 同じような処理をする場合共通化を図ろう。
 最初から完璧に共通化を図る必要はないが、汎用的に使える処理かは常に検討しながら書こう。

3. 重複コードを減らすためにリファクタリングは必ずやろう。
 ちなみに、リファクタリングは多少時間を置いてから見たほうが捗ることもある。
 実装直後だと、まだ覚えてるから簡単に読み解ける処理がある。
 後からみても仕様がすぐ頭に入るようなコードを心がけておくと、後の修正量が少なくてすむよ。

4. リファクタリングのために単体テストの設計、実装はやろう。
 単体テストが作りやすいコードは見通しが良い。できるだけテストと平行して開発するように心がけよう。

動いてるコードを修正するなっていう老害が多い業界だけど、
UTがきちんと実装できていない、書いたコードは読み直せないほど汚いってのが理由だから、
これからコード書く人は、同じ轍は踏まないように、そういった馬鹿発言が飛び出すことのないようなコードを書けるようになろう。
861仕様書無しさん:2013/04/06(土) 10:36:47.03
>>858
明記はされてないけどマ板なんだし仕事でコード書く人の話だって考えるのは割と普通だと思う。
チームで開発しないことは昨今じゃ少ないし、このスレで出てる話題の大半はそういうとこに重きを置いてるんじゃないか。
そう考えると、むしろチームに関係の無い話題のほうが関係ないと思うが。
862仕様書無しさん:2013/04/06(土) 12:05:45.41
>>860
テンプレ候補1
863仕様書無しさん:2013/04/06(土) 12:34:51.18
>>857
>それをルール化することは出来ないんだよ。
コードにも落とせず他人に説明もできない気分で決まるようなルールがクソじゃなければなんなんだ。そんなクソルールはゴミ箱へどうぞ

>設定値+1の場合はどうなる?
分割される。特例を作りたいなら特例の条件を明文化して終了。気分的なコードの美しさ(笑)とかはゴミ箱へどうぞ
864仕様書無しさん:2013/04/06(土) 13:04:49.84
この手の話題に喧嘩腰になる必要はないと思う。
思うが、こだわりを捨てきれない人間は年取ると確実に老害になるから気をつけような。

グループでの開発においては、機械的に実行されるフォーマットルールに沿たコードでも
見通しがよく保守しやすいようにコーディングするスキルが重要であって、
手動でコードを手直しする間違った職人魂()なんてものは重要じゃないというか、必要でもない。

「ぼくのかんがえたさいきょうにすばらしいコード」を書ける能力は、優れてるコーダーとはイコールではない。
これだけは間違いない。

そんなんばっかやってたら、「扱い辛い変な人」、「関わらないほうがよさそう」ってポジションを獲得できちゃうぞ。
865仕様書無しさん:2013/04/06(土) 13:12:52.78
複雑なロジックを書いて、コメントで説明するのはやめたほうがいい。
チームには必ず馬鹿が混じり、その馬鹿は他人のコードを考えなしにコピペする。

ロジックだけで読み解けるようなコメントの要らないコードを書けるようになろう。
複雑な機能は処理をメソッドで分け、メソッド名で処理説明を行えるようにしよう。

よく使われるメソッド名や変数名を考える時間を削減するために、色んなソースコードを見て単語を覚えよう。

自分は中学1年時点から英語死んでて英語力2しかないままおっきくなっちゃったけど、
コード書く上で必要になるような単語は人のコードとかで結構覚えたよ。
866仕様書無しさん:2013/04/06(土) 13:36:07.23
>>837
フォーマッタが対応している書き方をしたらいいというだけのこと。
チームで作っているなら一つのフォーマッタで統一したほうがいいし
書き方をそれに合わせるのが当然のこと。
867仕様書無しさん:2013/04/06(土) 14:02:58.19
そもそもコードの整形と、コードそのものの善し悪しは別物。
整形方法はチーム内で統一出来てればいいだけ。それだけ。
868865:2013/04/06(土) 14:11:19.55
一つ書き忘れた

javadoc見たいなのはちゃんと書くべきだけど、メソッド中のコードの説明コメントは不要。
コメントが必要な複雑な処理は、コメントで説明しても、馬鹿は読まないし読み解けなくて、
よくわからずにそのままコピペしてくれる。
コメントが必要ないくらいに処理が理解できるような簡単なコードにすることは、長期的に見ると割と重要。
869仕様書無しさん:2013/04/06(土) 14:16:43.70
ウチの業界は仕様書も半端なら設計もしない業界だから
コメントにいろいろ残してる。

この処理は何時来たメールに書いてあった要望だとか。
870仕様書無しさん:2013/04/06(土) 15:15:54.26
>>1
メソッド名でregisterをregistと書くのはやめてほしい
ベテランのPGでも平気でやりやがる
871仕様書無しさん:2013/04/06(土) 16:34:07.76
ケースバイケースだからフォーマッタ実装できないというバカは
(1) 自分の要求項目すら定式化できない糞エンジニア
(2) 同じコードも気分次第でコロコロフォーマットが変わって周囲を惑わせていることに気付かないアホ
のどちらかだカス
872仕様書無しさん:2013/04/06(土) 17:30:41.59
>>866
完全に手段と目的が反対になっている。
ケースバイケースなためフォーマッターが
判断不可能でより見やすくかける例
(これらは実例提示ずみ)が存在する。

それなのに手段のために、目的に反するのに
型にはめることが正しいと思ってる。

まるで自分で判断できないロボット。
物事の判断を機械に決められている。
873仕様書無しさん:2013/04/06(土) 17:42:22.76
>>871
> ケースバイケースだからフォーマッタ実装できない

これは正しい。

例 この場合、改行を入れたほうが見やすいかどうか?

obj.setParams({id: 1, name:"test"});

obj.setParams({
 id: 1,
 name:"test"
});

obj.setParams(
 {
  id: 1,
  name:"test"
 }
);

関数の引数がハッシュであれば改行を入れる、インデントするなど具体的なルールを定めてください。
なお、文字が長かったらなどというのは具体的ではないので、
具体的な文字数を言うこと(○文字以上など)
874仕様書無しさん:2013/04/06(土) 17:51:42.60
>>873
おまえはとことんバカだな。
お前が納得するかどうかの問題を他人に答えさせて何がしたいんだ?
永遠に一人後出しジャンケンで遊んでろw
875仕様書無しさん:2013/04/06(土) 17:52:50.99
>>874
つまりケースバイケースだから
決められないってことだろ?

ルールも決められない奴は帰れよw
876仕様書無しさん:2013/04/06(土) 17:54:23.65
>>875
ケースバイケースだから、じゃないよ。
正解は出題者の脳内にしか存在しないのだから、出題者が書けばいいと言っているだけ。

おまえ、マジでプログラマ廃業したほうがいいぞ。
877仕様書無しさん:2013/04/06(土) 17:55:11.65
ケースバイケースなのはいい
その仕様を定義すらできねーのか無能
878仕様書無しさん:2013/04/06(土) 17:56:28.33
>>877
その通り。>>873は無能。その上卑怯。人間のクズ。
>>873は二度とプログラムなんて書くべきじゃないね。
879仕様書無しさん:2013/04/06(土) 17:56:48.67
>>876
俺の正解は、見やすいかどうかはケースバイケースで変わるから
ルールは決められないってことだ。

お前にとっての正解は、俺の意見と反対。
つまり、見やすいかどうかはケースバイケースではなく
ルールを決められるってことだろ?

じゃあお前にとっての正解を見せなさいって言ってるんだよ。
なに?お前自分の意見も言えないの?
880仕様書無しさん:2013/04/06(土) 17:58:20.23
ルールが決められないって人の
答えは「ルールを決めない」だよ。

ルールが決められな言ってる人は
見事に答えを言ってる。

ルールが決められるって言ってる人は、
そのルールを提示しないと答えを言ってることにならないね。
881仕様書無しさん:2013/04/06(土) 17:58:32.31
>>879
おまえ、まだわからんのか?本当にバカ丸出しだなw
>>873への答は>>873の脳内にしか存在しないと言っているんだ。

こんな簡単なことも理解できないのか?頭悪いね。
882仕様書無しさん:2013/04/06(土) 18:00:47.06
>>881
馬鹿はお前だよ。

お前はケースバイケースではなくルールを決められるといった。
ならばその証明をする義務がある。

今は俺の意見は関係なく、お前が見やすいというルールを提示すればいいだけ

その後で、そのルールは本当にどんな場合でも見やすいのか
検証することになる。
883仕様書無しさん:2013/04/06(土) 18:03:18.96
>>880
お前が言ってるのは、「オレが今思い浮かべた数字が何か当ててみろ」というのと同じだ。
正解はお前しか知らない。オレが何を答えたって、お前は別の数字を「正解」として示せば、オレの答えは「間違い」になる。
なぜなら、本当の正解はお前の脳内にしかない。オレには検証不可能だからだ。

「おまえが納得するフォーマット」ってのはそれと同じぐらいバカ丸出しな問題設定なんだよ。
884仕様書無しさん:2013/04/06(土) 18:04:13.65
>>882
おまえは納品させてから仕様を決める発注者だなw
二度とこの業界で仕事するな。カス
885仕様書無しさん:2013/04/06(土) 18:04:25.08
「ケースバイケースで見やすくなるようにする」と言い切るからには
「見やすいと見やすくないの境目となる条件」があるわけだ
そこを数字なり数式なりプログラミング可能なレベルで定義できないとか
全くプログラマに向いてない
ぶっちゃけそういったクライアントの曖昧な要求を
どうにかしてプログラミングするのがプログラマの仕事だろ

プログラマと言えないようなコーダーなら話にならん
886仕様書無しさん:2013/04/06(土) 18:04:56.94
数学っぽく言い換えると、

俺は「証明できない問題が世の中にある」と言った。
奴は「世の中に証明できない問題はない。証明できない奴が馬鹿なだけ」と言った。

証明できない問題はないというならば、"奴" は証明が難しい問題を
証明してみせるべきだ。("奴" が馬鹿という答えもあるがw)

そしてその後で本当にその証明が正しいか検証するのは当然の話。
887仕様書無しさん:2013/04/06(土) 18:06:13.60
コードのフォーマットが見やすいかどうかはケースバイケースだろ
そのルールを作れるって言ってる奴は馬鹿なんじゃないの?
888仕様書無しさん:2013/04/06(土) 18:07:45.39
> 俺は「証明できない問題が世の中にある」と言った。

言ってませんね
「ケースバイケースだ」というからには
それは証明できない問題ではない
889仕様書無しさん:2013/04/06(土) 18:08:23.54
もし、そんな完璧なフォーマッターがあれば、

オープンソース(じゃなくてもいいけど)のソフトには、
ユニットテストと同じようにフォーマッターのルールを
つけてるんじゃないのか?

じゃあなぜフォーマッターのルールが(ほとんどか全くか)
見かけないのはなぜ?って疑問にならない?
890仕様書無しさん:2013/04/06(土) 18:09:10.93
>>888

冒頭に「言い換えると」と書いてある文章に
「言ってませんね」と言ってもマヌケなだけだと思うよw
891仕様書無しさん:2013/04/06(土) 18:11:12.92
>>889
たしかにそのとおり、盲点だった。

何らかのコードがフォーマッターに従っているというのなら
フォーマッターとそのルールが存在するはずだ。

そのルールを適用して、それが本当に見やすいか
検証すればいいだけじゃないか。

まずルールが存在するかどうかだな。
この時点で見つからなければ
そんなルールは作れないって答えになるが
さすがにあるだろw
892仕様書無しさん:2013/04/06(土) 18:12:20.18
はあ?

「言ってませんね」は
「ケースバイケース」と「証明できない」はノットイコールだと言っているのですよ?

意味がわかりませんか?
どこまでお馬鹿なのですか
893仕様書無しさん:2013/04/06(土) 18:13:51.27
>>892

> 「ケースバイケース」と「証明できない」はノットイコールだと言っているのですよ?

誰がイコールだと言ったんですか?
894仕様書無しさん:2013/04/06(土) 18:15:28.01
「言い換えると」はニアリーイコールでしょ
895仕様書無しさん:2013/04/06(土) 18:17:45.27
フォーマッタを
フォーマット前のプログラム文字列からフォーマット後のプログラム文字列への関数
として考えれば、途中にどんなケースバイケースな判断があったって、
入力と出力のペアを列挙できれば関数として定式化可能だ。
できないのであれば、それは自分がどんな理由でどうフォーマットしたか意識していない幼稚さの証明でしかない。

>>873に関して言えば、
入力と出力のペアを生成するのは>>873自身だということを理解せずに
他人様に定式化しろと言い出した時点で>>873は思考停止している。
はっきり言って、論理的思考能力を疑わざるをえない。
896仕様書無しさん:2013/04/06(土) 18:17:54.93
おいおい、「証明できない」にイコールなのは「ルールが決められない」ってことだろ
ケースバイケースがイコールなんて誰も言ってないよ

俺は「"証明できない" 問題が世の中にある」と言った。
奴は「世の中に "証明できない" 問題はない。"証明できない" 奴が馬鹿なだけ」と言った。

これを元に戻すと

俺は「"ルールを決められない"問題が世の中にある」と言った。
奴は「世の中に"ルールを決められない"問題はない。"ルールを決められない"奴が馬鹿なだけ」と言った。
897仕様書無しさん:2013/04/06(土) 18:18:59.81
>>894
いいえ。
言い換えは言い換えであって、前後がニアリイコールである必要性は
ありません。よくあるテクニックです。
898仕様書無しさん:2013/04/06(土) 18:19:04.12
「ケースバイケース」はなんらかの判断基準があるってことだろ
アホか
899仕様書無しさん:2013/04/06(土) 18:21:09.61
> 「ケースバイケース」はなんらかの判断基準がある

その判断基準を明文化できない時点で無能 という話なんだけどね
900仕様書無しさん:2013/04/06(土) 18:21:31.53
ケースバイケースでフォーマットできるのであれば、
それぞれのケースを自分がどのような理由でどうフォーマットするのかを
コードにしていけばいいだけ。

コードにできないということは、
「ケースバイケースで判断して」やっているのではなく、
「特段の理由もなく、なんとなくの気分で」フォーマットしているというだけ。

正直、そんな無能がプログラマを名乗ってほしくないね。
901仕様書無しさん:2013/04/06(土) 18:22:14.43
>>895
いや、フォーマッターが定義できないって話じゃなくて
「どんな場合でも見やすいフォーマッターが定義できない」って話だから。

ケースバイケースの話は「見やすいコードの”書き方”はケースバイケース」という話。

見やすいコードの書き方がケースバイケースになるのに、
見やすいコードにしてくれる関数が定義できないのは自明のことだろ。
902仕様書無しさん:2013/04/06(土) 18:23:34.21
「見やすいコードの書き方がケースバイケース」ならその要求仕様を提示しろよ
903仕様書無しさん:2013/04/06(土) 18:23:45.50
>>900
じゃあ、そのケースが無限にあったらどうする?
文字の並びは無限だ。無限に対してすべての答えを対応付けるのか?
904仕様書無しさん:2013/04/06(土) 18:24:20.99
>>902
日本語的に意味不明w
905仕様書無しさん:2013/04/06(土) 18:24:38.38
>>865
実際に命名されたメソッド名一覧みたいなのないですか?
906仕様書無しさん:2013/04/06(土) 18:26:04.92
>>900
> 「特段の理由もなく、なんとなくの気分で」フォーマットしているというだけ。

話がおかしくなっている。

「なんとなくの気分ではなく厳格なルールに則って」フォーマットした所で、
それが見やすくなるとは限らないってことだよ。
907仕様書無しさん:2013/04/06(土) 18:26:12.03
言い訳にすらなってない
無能過ぎて話にならん
871さんのまとめでFA

> 871 : 仕様書無しさん [sage] DATE:2013/04/06(土) 16:34:07.76
> ケースバイケースだからフォーマッタ実装できないというバカは
> (1) 自分の要求項目すら定式化できない糞エンジニア
> (2) 同じコードも気分次第でコロコロフォーマットが変わって周囲を惑わせていることに気付かないアホ
> のどちらかだカス
908仕様書無しさん:2013/04/06(土) 18:26:52.90
>>907
既に反論済み。
話を蒸し返すな無能
909仕様書無しさん:2013/04/06(土) 18:27:17.13
>>903
あんた、自分がケースバイケースで行うフォーマットの「理由」を無限に持っているのかい?

ケースに応じてちゃんと「理由」を持ってフォーマットしているのなら、
その「理由」の数は有限なはずだ。違うか?
910仕様書無しさん:2013/04/06(土) 18:28:15.35
話をまとめると、フォーマッターのルールを決めた所で
それが見やすくなるとは限らないってことなんだよね。

フォーマッターのルールを超えた、もっと見やすい書き方はできる。
そのもっと見やすい書き方に、フォーマッターを適用すれば
逆に見にくくなる。
911仕様書無しさん:2013/04/06(土) 18:28:50.89
>>908
一度もまともな反論出せてないよ無能
912仕様書無しさん:2013/04/06(土) 18:30:17.42
「見やすくなる」ようなフォーマッタを実装すれば
フォーマッタと適用したところで何も整形されないはずだが?
913仕様書無しさん:2013/04/06(土) 18:30:18.99
>>909
> あんた、自分がケースバイケースで行うフォーマットの「理由」を無限に持っているのかい?

はい。通常のルールの書き方をするならば、こうするべきだけど
この場合に限っては、こっちの書き方をしたほうが見やすいというのは

各コードで決まるので、無限に存在します。
新しいコードを書くたびに、それが「理由」になります。
914仕様書無しさん:2013/04/06(土) 18:31:01.56
まとめ:
「できない理由」を後付けでグダグダいうバカとは仕事したくないものだ。
915仕様書無しさん:2013/04/06(土) 18:31:48.24
「どんなコードが見やすいか」を定義できるのならば、
見やすくなるフォーマッターは作成可能。

それが定義できないのなら、作成不可能

それだけの話。


「どんなコードが見やすいか」は確か
人それぞれ違うんじゃなかったっけ?(笑)
916仕様書無しさん:2013/04/06(土) 18:32:30.88
>>915
これがFAだな。
917仕様書無しさん:2013/04/06(土) 18:33:00.97
> この場合に限っては、こっちの書き方をしたほうが見やすい

これを明文化できない時点で

> (1) 自分の要求項目すら定式化できない糞エンジニア
> (2) 同じコードも気分次第でコロコロフォーマットが変わって周囲を惑わせていることに気付かないアホ
> のどちらかだカス

に適合する無能ということになりますがよろしいか
918仕様書無しさん:2013/04/06(土) 18:33:22.50
>>913
あんたの脳味噌には無限の個数の脳細胞が詰まってるのかい?
そうでなければ、あんたの脳味噌には有限のルールしか無いはずだよ。

現実には、
あんたは単に気分でフォーマットしていて、その理由を後付けしているから、
無限のルールがあるように感じているだけなんだよ。
919仕様書無しさん:2013/04/06(土) 18:34:37.56
>>917
俺は無能じゃない。
なぜなら俺なら見やすい書き方を
明文化できるからだ!

そういって彼は明文化できると言いながら
明文化をしませんでした。
920仕様書無しさん:2013/04/06(土) 18:35:12.47
>>918
じゃあ、お前のルールを明文化しろよw
何度も要求されてるだろ。
921仕様書無しさん:2013/04/06(土) 18:36:26.77
>>915
だからルールを決めて(誰かが妥協するとしても)チーム内で揺れがないようにするべきでは?
922仕様書無しさん:2013/04/06(土) 18:36:44.20
>>873のルールを明文化できるのは>>873だけだろw
923仕様書無しさん:2013/04/06(土) 18:37:27.77
万人が見にくいと思うコードはあるのだから、
万人が見にくいと思わないコードもあり得るのだろう。
924仕様書無しさん:2013/04/06(土) 18:37:56.99
>>921
論点がずれてる。

チームで揺れが無いようにするというのが ”目的” なら、ルール厳守に決まってるだろ。

今は見やすいコードを書くというのが ”目的" の話をしてる。
925仕様書無しさん:2013/04/06(土) 18:39:14.98
>>922
> >>873のルールを明文化できるのは>>873だけだろw

そのとおりだが、>>873は見やすいというルールを明文化するのは
不可能だと言ってるんだよ。

それに対して、見やすいというルールを明文化することは可能だと言ってる奴がいる。

そして彼は明文化できると言いながら
明文化をしませんでした。
926仕様書無しさん:2013/04/06(土) 18:40:37.33
そもそも、1人当たりの「ケースバイケースのフォーマットルール」が無限にあるとしたら、
その「ケースバイケースのフォーマットルール」が読み手にとっての「無限にあるケースバーケースのフォーマットルール」に
適合している可能性はゼロに収束するんじゃね?

よかったな、>>873が小さな脳でがんばったフォーマットは全くの無駄だw
927仕様書無しさん:2013/04/06(土) 18:41:34.12
チームで揺れが無いようにするルールを明文化するのは可能だが、
見やすいコードのルールを明文化することは不可能。
928仕様書無しさん:2013/04/06(土) 18:42:07.20
>>926
お前、賢いふりした馬鹿だな。文章からにじみ出てるぞw
929仕様書無しさん:2013/04/06(土) 18:42:28.20
>>925
君は根本的なところで間違っている。
>>873は見やすいというルールを明文化するのは不可能だと言っている。
それに対して、「>>873に見やすいルールを明文化できるのは>>873本人のみである」と言っていて、かつ、
>>873が見やすいルールを明文化できないのであれば、>>873はエンジニア失格」と言っている。

わかったか?
930仕様書無しさん:2013/04/06(土) 18:43:21.36
他人にお前のポリシーをルール化させるためには、
俺はこういうのが見やすいという、要求を提示する必要があるだろ。
「ケースバイケース」という基準がありながら、その基準を提示しないお前は何なんだ。
931仕様書無しさん:2013/04/06(土) 18:43:43.67
>>928
そういうお前は、バカ丸出しのわかりやすいバカだなw
932仕様書無しさん:2013/04/06(土) 18:43:59.86
> 「>>873が見やすいルールを明文化できないのであれば、>>873はエンジニア失格」と言っている。

それは別に>>873に限ったことじゃないじゃん。
お前にも当てはまるよ。

「お前が見やすいルールを明文化できないのであれば、お前はエンジニア失格」と言っている。


またこれにたどり着く。
そして彼は明文化できると言いながら
明文化をしませんでした。
933仕様書無しさん:2013/04/06(土) 18:46:17.85
どこにもいるよな、
客から出た要求は何てことのない単純なトランザクション処理なのに
それに必要なRDBの知識がないばっかりに、できない理由を一生懸命に作り続けるバカw
わかりやすい例が、>>873 w
934仕様書無しさん:2013/04/06(土) 18:48:09.44
>>932
おまえは本当にバカなんだな。しかも卑怯だ。
わざわざ直前の行の

> それに対して、「>>873に見やすいルールを明文化できるのは>>873本人のみである」と言っていて、かつ、

を削除した上で、

> 「>>873が見やすいルールを明文化できないのであれば、>>873はエンジニア失格」と言っている。

だけを引用して、>>873以外の人物にもルールを明文化する責任があるかのように言っているところ。
はっきり言って、人間として軽蔑する。
935仕様書無しさん:2013/04/06(土) 18:51:26.39
ラーメンはどれくらい茹でるのが一番うまいかみたいな話してるなー。

んなもんケースバイケースだろ?

うまいいかどうかなんて人によっても違うし、火力、麺、ダシ、使う水、
その日の気温、湿度などによって適切なゆで方は変わってくる。

チェーン店でどの店でもそこそこの同じ味を出すのが目的ならルール決めりゃいいけど、
うまいラーメン屋でそんなルールに固執しなんかしてねーよ。
936仕様書無しさん:2013/04/06(土) 18:51:39.25
873の人気に嫉妬
937仕様書無しさん:2013/04/06(土) 18:52:38.03
>>934
ルールを明文化するのは不可能と言ってる人は、
ルールを明文化しないのが正しい主張じゃね?

それに反論している人があとはやることでしょ。
ちょっとあんた落ち着きなさい。
938仕様書無しさん:2013/04/06(土) 18:53:47.81
>>935
うまいラーメン屋はそういう経験則をちゃんとルール化してるぞ。
だから安定して味を再現できる。
939仕様書無しさん:2013/04/06(土) 18:54:48.51
>>938
でもそれは、最高の味じゃないよね?
940仕様書無しさん:2013/04/06(土) 18:55:27.38
>>937
>>883
941仕様書無しさん:2013/04/06(土) 18:56:35.95
はいはい。俺が現状を一言で表してやるよ。

サラリーマン VS 職人
942仕様書無しさん:2013/04/06(土) 18:57:05.96
> 火力、麺、ダシ、使う水、その日の気温、湿度などによって

アウトプットが統一できる以上
この辺りは条件が違うだけだから閾値で定型化可能

> 人によっても

「俺が」の一人に絞れば定型化も不可能ではない

プログラムなんだからもっと定型化はもっと楽だろ無能
943仕様書無しさん:2013/04/06(土) 18:57:36.31
>>940
それさ、主張がおかしいよね。

言ってることって所詮>>883
一意見でしか無いよ。
944仕様書無しさん:2013/04/06(土) 18:58:11.07
>>939
その最高の味ってのは誰が決めるんだい?
945仕様書無しさん:2013/04/06(土) 18:58:23.64
>>942
だからその場合のアウトプットって、
「いつものラーメン」であって
「最高のラーメン」じゃないよね?
946仕様書無しさん:2013/04/06(土) 18:59:03.58
>>944
そりゃ、人によってバラバラ。
最高の味も、見やすいコードも
人によってバラバラさ。

わざわざ言うまでのことかい?
947仕様書無しさん:2013/04/06(土) 18:59:15.79
>>943
はあ?君、言ってることが全然論理的じゃないんだけど?
948仕様書無しさん:2013/04/06(土) 18:59:21.29
一番うまい を いつも に変えるのがフォーマッタのお仕事
949仕様書無しさん:2013/04/06(土) 19:01:37.53
>>946
君は「最高の味じゃない」と断言したのだから、
それが誰にとっての「最高の味」で、
何をもって「最高の味」としていて、
どのような理由で「最高の味」であるのか、
説明可能でなければならない。

できないとしたら、
君にとっての最高の味とは単に「なんとなくの気分」でしかないか、
出されたどんなラーメンにも「最高の味ではない」という後だしジャンケンで批判しているか
どちらかでしかない。
950仕様書無しさん:2013/04/06(土) 19:03:06.19
>>945
「一番うまい」の前提はどこへ消えた?
951仕様書無しさん:2013/04/06(土) 19:06:00.77
やっぱりコレじゃん

> 871 : 仕様書無しさん [sage] DATE:2013/04/06(土) 16:34:07.76
> ケースバイケースだからフォーマッタ実装できないというバカは
> (1) 自分の要求項目すら定式化できない糞エンジニア
> (2) 同じコードも気分次第でコロコロフォーマットが変わって周囲を惑わせていることに気付かないアホ
> のどちらかだカス
952仕様書無しさん:2013/04/06(土) 19:06:08.81
>>949
> それが誰にとっての「最高の味」で、

と言われましても、プロジェクトには複数の人がいるので
いうなれば、関係者全員にとっての「最高の味」ですかね。
あと将来の関係者も含みます・・・。


>>950
「一番うまい」=「最高のラーメン」ってことでいいよ。
953仕様書無しさん:2013/04/06(土) 19:06:42.25
>>951=>>871 必死だなw
954仕様書無しさん:2013/04/06(土) 19:09:41.66
別人だよ?
955仕様書無しさん:2013/04/06(土) 19:09:59.31
>>952
では彼等はどのような基準で、どのような理由で「最高の味」を判定しているのですか?

「最高の味ではない」と断言した以上、説明できるはずですね?
956仕様書無しさん:2013/04/06(土) 19:12:46.17
「俺が見やすい」が「プロジェクト関係者すべてが見やすい」にすり替わった件について
957仕様書無しさん:2013/04/06(土) 19:15:40.36
まともなラーメン屋はスープの取り方から麺の茹で時間まで、
気温、室温、天候、季節から決める「パラメータ化したレシピ」を持ってるよ。
それがあるラーメン屋は「最高の味」じゃなくて、「いつもの味」
それがないラーメン屋は「最高の味」じゃなくて、「その時の味」
いずれにせよ、「最高の味」なんて存在しない。

存在しない「最高の味」を言い訳に「パラメータ化したレシピ」を作らないのは単なる怠慢か能力不足。
958仕様書無しさん:2013/04/06(土) 19:16:02.36
>>932
世にあるフォーマッタは何らかの明文化可能なルールに基づいているので、敢えて挙げるまでもなく山ほど存在してるわけだが・・・

少なくとも「〜の方が良い」とか言いながら「〜とは未定義である」とかドヤ顔で言っちゃう奴はただの馬鹿だと思う。
959仕様書無しさん:2013/04/06(土) 19:16:30.59
フォーマッタ作れないとか言ってるやつは
これが客がいる仕事なら要求を聞き出して実装するだろ
自分の要求なんてさらに簡単なのに作れないはずがない
960仕様書無しさん:2013/04/06(土) 19:18:13.95
>>959
きっと、要求聞き出せないし、実装もできないのさ。
961仕様書無しさん:2013/04/06(土) 19:19:07.85
コーダーなら仕方ない
962仕様書無しさん:2013/04/06(土) 19:39:49.81
腹減った
963仕様書無しさん:2013/04/06(土) 19:40:57.02
ラーメンの味で決着?
964仕様書無しさん:2013/04/06(土) 19:57:59.09
プログラミングしてると腹が減らない。波紋でも出てるんか。
965仕様書無しさん:2013/04/06(土) 20:00:22.22
プログラマはコーヒーをソースコードに変換する機械らしいからな
966仕様書無しさん:2013/04/06(土) 20:49:43.07
東証

 「システム開発では、一度コーディングすればドキュメントは不要!」  
http://hayabusa3.2ch.net/test/read.cgi/news/1365248433/

みずほ証券「おお、もう…」
967おじゃばさま:2013/04/06(土) 21:29:38.84
オリジナルフォーマッター要不要論争か?
968仕様書無しさん:2013/04/06(土) 21:51:46.88
これからコード書く人に絶対やってほしいこと。

主に俺のコードは素晴らしいと思い込んでる系住人がこののスレで繰り広げてくる、
レベルの低い争いは、絶対にやって欲しくないな。

>>905
一覧化されてるものは持ってないな。
参考になりそうなのでよければ、適当に有名どころのフレームワークの実装とか見るのが手っ取り早い。
オープンソースの開発に関わってみるとかもいいと思うよ。
969仕様書無しさん:2013/04/06(土) 21:57:01.60
>>967
それは場合によるけど、全部一人でコーディングするんじゃなきゃオリジナルにするのは不要だろ。
共通フォーマッターを定義して全員で使ったほうがいい。
オナニーは自宅で一人でやるべき。
970仕様書無しさん:2013/04/06(土) 22:35:29.24
なにが悲しいって、こういうくだらない内容のほうがスレが伸びる板ってことだよな
まともなコード屋やってるの少なそう
971仕様書無しさん:2013/04/06(土) 23:06:52.32
>>970
まともなやつは休日もコード書いたり勉強会行ったりしてるから
2chなんかやる時間ない
972仕様書無しさん:2013/04/06(土) 23:10:16.55
んなやつおらんわ
973おじゃばさま:2013/04/06(土) 23:12:16.11
>>971
それはまともな奴じゃない。
974仕様書無しさん:2013/04/06(土) 23:16:45.68
次スレたててこい屑
975仕様書無しさん:2013/04/08(月) 11:18:02.65
これからコード書く人は「freeは不要」とか「フォーマッタは悪」とか叫びだすような闇プログラマには成らないで欲しい

>>974
次スレじゃなくて糞スレがたった

フォーマッターを使う人と使わない人の違い
http://toro.2ch.net/test/read.cgi/tech/1365304270/
976おじゃばさま:2013/04/08(月) 19:30:54.83
つーか、オリジナルフォーマッタって、一人で使うのか?
ナシだろ、それは。
977仕様書無しさん:2013/04/09(火) 00:58:23.38
>>975
止められてるじゃねーかwww
978仕様書無しさん:2013/04/09(火) 01:03:17.62
979仕様書無しさん:2013/04/09(火) 01:59:17.80
980仕様書無しさん:2013/04/09(火) 02:00:40.96
981仕様書無しさん:2013/04/09(火) 02:53:35.02
982仕様書無しさん:2013/04/09(火) 03:08:56.28
983仕様書無しさん:2013/04/09(火) 08:08:33.59
984仕様書無しさん:2013/04/09(火) 12:28:09.93
985仕様書無しさん:2013/04/09(火) 20:17:46.82
986仕様書無しさん
めはら