コーディング規約 第2条
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNGコーディング規約・スタイルに関するスレ
過去スレ
http://pc2.2ch.net/test/read.cgi/tech/1056716338/
0002デフォルトの名無しさん
NGNG★★★コーディングマナー★★★
http://pc2.2ch.net/test/read.cgi/tech/1056508692/
クラス名・変数名等に迷ったら書き込むスレ。Part3
http://pc2.2ch.net/test/read.cgi/tech/1067171530/
0003デフォルトの名無しさん
NGNG結局自分、過去ログを読まないまま最後を迎えた人でした・・・スマセン
0004デフォルトの名無しさん
NGNG。:゜ ◎::O☆∧_∧☆。∂:o゜
/。○。 ∂(*゚ー゚ )O◇。☆
/ ◎| ̄ ̄∪ ̄∪ ̄ ̄ ̄|:◎:
/ ☆。|.. 新スレおめ .|☆
▼ 。○..io.。◇.☆____| 。.:
∠▲―――――☆ :∂io☆ ゜◎∂:.
0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG>コーディング規約の最大のゴールとして
>「コード管理上起こりうるリスクを軽減する」
>というのがある
>
>この最大のゴールのサブゴールとして
>「コードの誤読によるエラーの混入を防ぐ」
>というのがある
>最大のゴールとは少しずれるが
>「コードの可読性を高めることで管理性を高める」
>というのがある
俺に言わせば、何で規約決めないの?って感じだ。
ちなみに、最近読んでムカついたソースを単純化したやつ。
public static void hoge(int consts) {
for (int i = 0; i < consts.length; i++) {
for (int count = 0; count < counts.length; count++) {
foo(count, FOO);
bar(count, consts);
}
}
}
名前被りすぎー。
0007デフォルトの名無しさん
NGNG今使ってるやつはC専用なのでダメポ
0008デフォルトの名無しさん
NGNG> public static void hoge(int consts) {
> for (int i = 0; i < consts.length; i++) {
int に .length なんてプロパティがあるとは奇特な言語ですね。
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG言語の壁を超えた一般名称としての「プロパティ」の範囲内に納まる
0011デフォルトの名無しさん
NGNG配列でもないのに長さってありえる?
0012デフォルトの名無しさん
NGNGcounts は >>6 が書いた範囲では宣言されてないので配列かも知れない
0013デフォルトの名無しさん
NGNG関数の引数
0014デフォルトの名無しさん
NGNG引数は consts ですが、それが何か ?
0015デフォルトの名無しさん
NGNG・count
・counts
まあなんていうか、>>6が
> 名前被りすぎー。
言うのも分かるよな。
>>13よ、安心しろ。私も同じ勘違いをした。
これはコードが悪い。
0016デフォルトの名無しさん
NGNGぜんぜん納得でキーンッ!
その先輩はデバッガ使ったことあるのか?
ブレークポイントどうやっておくつもりだ?
さっきも人の書いた
if( (r=f()) != 0 )
的なコード、デバッガで全経路トレースするの大変だった。
1行に2つ以上のこと書くのやめよう。
下っ端がバグ取りってのは、、、逆なほうがいいんだがなあ。
0017デフォルトの名無しさん
NGNG> プログラムの変更を容易にするために冒頭でグローバル変数を用意したり
> するのも駄目なんでしょうか?
グローバル変数は変更を難しくします。勉強してこの感覚わかるようになってね。
0018デフォルトの名無しさん
NGNG例えていうなら988はCで17はC++を前提としてるような。
0019デフォルトの名無しさん
NGNGあぁ、それはある。
自分で書いててもデバッグめんどいし。
他人のコードだったらぶち切れ間違い無し。
0020デフォルトの名無しさん
NGNGwhileの条件に使うのだけは許されることもある。
0021デフォルトの名無しさん
NGNG{
}
も禁止か・・・宝の持ち腐れじゃのぅ・・
0022デフォルトの名無しさん
NGNGなんで?
そしたら
while (c = getchar, c!='\n');
ってできないじゃん
0023デフォルトの名無しさん
NGNGそれは、パターンとして定着してくれればいいけど、個人的には禁止したい。
いやメリットがあるのはわかるけど。
まぁ、パターンとして定着しているものは許可、ということで。
0024デフォルトの名無しさん
NGNG2行目を読まずにカキコとみたが、どうか?
0025デフォルトの名無しさん
NGNGメソッドの戻り値の型を明示できるからな。
というわけで、わかりやすさを求めるなら、メソッドの戻り値に対してメソッドを呼び出すのも禁止するのがいい場合もある。
0026デフォルトの名無しさん
NGNGすんません
0027デフォルトの名無しさん
NGNGあるあるあるある(ry
俺の場合は型を明示というより、VCのデバッガでオブジェクトの中をのぞきたいからだけど。
変数に適切な名前をつければコードの可読性も上がる。
0028デフォルトの名無しさん
NGNGふと思ったけど、C++って変数初期化も式なの?
0029デフォルトの名無しさん
NGNGCほど型がゆるくないからキャストしてるのさ
0030デフォルトの名無しさん
NGNG0031デフォルトの名無しさん
NGNGJavaだと初期化は式ではないから
if(boolean b = true) System.out.println("aaa");
とかくとコンパイルエラーになるんだよね。
C++では式なのかなと。
0032デフォルトの名無しさん
NGNG条件部分で変数の宣言が出来るだけで、宣言が式ってわけじゃない。
if ( bool a = true )
とかは出切るけど
if ( (bool a = true ) && b )
とかは出来ない。
0033デフォルトの名無しさん
NGNG0034デフォルトの名無しさん
NGNGこの形が特別に許されているだけじゃない?
if(bool b(true))
はgccで通んなかったし
0035デフォルトの名無しさん
NGNG愕然とすることになるだろうな。
0036デフォルトの名無しさん
NGNGなんで?
VC7.1でも通るけど
0037デフォルトの名無しさん
NGNGどうしても「規約」にしたいなら「××するべからず」だけにして欲しいな(その根拠もつけてね)
「××するべし」っていう規約は見たくも無い。
だいたい、そういうルールっていうのは、全員が(賛成しないまでも)納得して決めるものじゃないのか。
プロジェクト参入前に規約を見せてもらったことなんてないぞ。
入ってから「××するべし」で埋め尽くされた規約を見せられてもねえ。
契約書に付けなきゃ。「そんなこと聞いてない」って回答するぞ。
0038デフォルトの名無しさん
NGNGそう回答しとけば?(笑)
0039デフォルトの名無しさん
NGNGマジレスするが、単に知名度が高いほうをスレタイに使ってるだけでしょ。
コーディング規約 約2,480件
コーディング標準 約1,680件
--2003/11/15 Google検索結果
0040デフォルトの名無しさん
NGNGするべからずは数が多すぎる。
あと、どんなコードをしやがるかは、見るまでわからない。
0041デフォルトの名無しさん
NGNGその程度のルールも許容できないようじゃ社会人として失格だな。
ま、趣味で思う存分やってくれ。
0042デフォルトの名無しさん
NGNGだって、JavaでXXX012_032なんてクラス名を強要されたら発狂するよ!
0043デフォルトの名無しさん
NGNG常識を超えたぶっとんだコーディング規約に出会ったとき無いからそんなこといえるのかな
社会人失格なのは、頭腐ってんじゃないかと思えるような規約を作った奴だ
0044デフォルトの名無しさん
NGNGそういうプロジェクトは、コーディング規約以前に破綻している。
0045デフォルトの名無しさん
NGNGつまりお前の主張はお前ローカルな話であり、コーディング規約一般の話ではないわけだ。
お前ローカルな事情をコーディング規約一般に敷衍されてもねぇ。
0046デフォルトの名無しさん
NGNGつまり、ローカル変数の仕様は規約で禁止ってことでいいですか?
0047デフォルトの名無しさん
NGNGおれが参加しないプロジェクトでなら、いい。
0048デフォルトの名無しさん
NGNGその程度のルールも許容できないようじゃ社会人として失格だな。
ま、趣味で思う存分やってくれ。
0050デフォルトの名無しさん
NGNG関数型言語みたいにすれば何とかならなくもないのか?
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG自分が言ったかどうかわかんねんだから、自分が発言したと言う証拠があるもの以外使うな
あと、自分の意見を推し進めるのはよくないよ。
規約は悪魔で規約なんだよ。イヤなら無視汁、お前ネチケットの常識もわきまえてないな
荒らし騙しは無視、みんなお前のこと無視するぞ
0053デフォルトの名無しさん
NGNGローカル変数が何たるかが解らない言語もあるだろ
HSPとかBASICとか
0054デフォルトの名無しさん
NGNG多少面倒だが投げ出すほどでもない。
0055デフォルトの名無しさん
NGNG0056デフォルトの名無しさん
NGNGソレって違う変数でてきたらどうするの?
0057デフォルトの名無しさん
NGNG回避できるな(笑)
0058デフォルトの名無しさん
NGNGその程度の荒らし騙しも許容できないようじゃ2チャンネラーとして失格だな。
ま、お前ローカルで思う存分ネチケットくれ。
0059デフォルトの名無しさん
NGNGすんませーん、出直してくるぽん
0061デフォルトの名無しさん
NGNG>>47さんがローカル変数を使わないと勘違いしたんです・・・
ごめんなさい>>47さん
0062デフォルトの名無しさん
NGNG0064デフォルトの名無しさん
NGNG変数を定数として使うことはありますが、
配列を定数として使うことはありですか?
//変数
const int COUNT_MAX = 10;
//配列
const int COUNT_MAX[5] = {1, 2, 3, 4, 5};
0065デフォルトの名無しさん
NGNG006664
NGNG//このように使っているところを
const int COUNT_MAX1 = 1;
const int COUNT_MAX2 = 2;
const int COUNT_MAX3 = 3;
const int COUNT_MAX4 = 4;
const int COUNT_MAX5 = 5;
//このようにするのはありなのかなんでしょうか?
const int COUNT_MAX[5] = {1, 2, 3, 4, 5};
ってことです。
0067デフォルトの名無しさん
NGNG実際、上の記述って使えないじゃん。
配列固定データなのに、そういう持ち方って。
0068デフォルトの名無しさん
NGNGfinal int[] COUNT_MAX = {1,2,3,4,5};
なんてやってもCOUNT_MAXが変更不可なだけでCOUNT_MAX[0]とかは変更可なまんまだよねえ。
C/C++では変更不可になるのか?
0069デフォルトの名無しさん
NGNGなるよ。
Java: final int[] ← final 指定された int[] 型変数。
C++: const int a[] ← const int 型の配列。
0070デフォルトの名無しさん
NGNGpublic class FinalSample {
static final String[] s = {" (´∀`)","(,,゚Д゚)" };
public static void main(String[] args) {
for ( int i = 0; i < s.length; ++i ) {
System.out.print( "[" + s[i] + "]\n" );
}
System.out.print( "---\n" );
s[0] = "(・∀・)";
for ( int i = 0; i < s.length; ++i ) {
System.out.print( "[" + s[i] + "]\n" );
}
}
}
---<実行結果>---
[ (´∀`)]
[(,,゚Д゚)]
---
[(・∀・)]
[(,,゚Д゚)]
--------------------------
_| ̄|○ ダメじゃん・・・・。
0071デフォルトの名無しさん
NGNGいや、69 の文章は“C++ ならなるよ”ってことだろ。
Java で駄目なのは 68 でも触れられてるとおり。
final int[] a← 変更不可なのは a 自身であって、その要素は変更可能
const int a[] ← 変更不可なのは a の要素(配列だから a 自身も変更不可だけど)
0072デフォルトの名無しさん
NGNG>いや、69 の文章は“C++ ならなるよ”ってことだろ。
_| ̄|○ そういうことか・・・・。
ところで、
>final int[] a← 変更不可なのは a 自身であって、その要素は変更可能
をクラス変数として持つクラスはスレッドセーフになるんだろうか。
(もちろん、値の代入のコードは、宣言時か static 節 以外には
置かないわけだが。)
0073デフォルトの名無しさん
NGNG}
else {
と書かれることが多いのに対し、
try..catch の catch は
} catch {
と書かれることが多いような気がします。個人的には catchの前の閉じブレースで
改行して頂きたいのですが、どちらが正統なのでしょうか?
0074デフォルトの名無しさん
NGNG> else {
多いか?
>個人的には…
他の人のやり方なんて無視して好きにすればいいじゃん。
自分のが正統って言ってほしいの? 正統なんて無いよ。
0075デフォルトの名無しさん
NGNGすみません。訂正します。
どちらがキャッチーでしょうか?
0076デフォルトの名無しさん
NGNGこんなのが目だっていいんじゃないかな?
try {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
...
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} catch {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
...
}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
0077デフォルトの名無しさん
NGNG括弧の数はそろえた方がいいと思うのですが。。。
0078デフォルトの名無しさん
NGNG0079デフォルトの名無しさん
NGNG>>77 をマジレスと取る奴もいるんだ...。
0080デフォルトの名無しさん
NGNG>>74をマジレスと俺は読むが...。
0081デフォルトの名無しさん
NGNG閉じ括弧での改行というのは、どちらでもいいと思うが、
あなたのいう
「if では else 前で改行する人が多いのに try では catch 前で改行する人が少ない」
が真だとするならば、
「if では else 前で改行するが try では catch 前で改行しない」人がいるわけで、
それは美しくないと思う。
008273
NGNG一貫性の美学から言えばあなたの言うとおりだよね。
ただ、K&Rに反して「else前改行」の記法が生まれたのは、elseブロックがのちのちのメンテで
不要になったばあい、そのままブロックごと削除しちゃえばそれですむのに対し
「else前で改行しない」場合はいちいち括弧の対応を考えなきゃならないという
実用性において成立したんじゃなかったっけ?
だから tryの場合も同様に ..!?うっ!☆■※!
...ここまで書いたが、よく考えたら catch のない try なんてねーよな。
負けたよ。
「catchの前では改行しない」が正解。ごめん。
0083デフォルトの名無しさん
NGNG0084デフォルトの名無しさん
NGNG...
} catch (FooException& e) {
...
} catch (BarException& e) {
...
} catch (BazException& e) {
...
}
0085デフォルトの名無しさん
NGNG{
...
}
catch (FooException& e)
{
...
}
catch (BarException& e)
{
...
}
catch (BazException& e)
{
...
}
0086デフォルトの名無しさん
NGNG...
}
catch (FooException& e) {
...
}
catch (BarException& e) {
...
}
catch (BazException& e) {
...
}
0087デフォルトの名無しさん
NGNG...
} else { <-- ここから
...
} <--- ここまでを消すと 改行しないelseの場合はエラーになるが
try {
...
} catch (e) { <--- catchの場合は改行しなくても、ここから
... <--- ここまで消してもエラーにならないのです。
} catch (e) {
...
}
よくできてる!!
0088デフォルトの名無しさん
NGNG要は好みの問題か。
0089デフォルトの名無しさん
NGNGWindowsのは、Shift+カーソル(またはマウス選択)してControl+Xでいいじゃん。
Emacsならリージョン指定して削除。
viはしらね。
0090デフォルトの名無しさん
NGNGマウスの場合、行頭の一文字残して範囲指定するの神経使うじゃん。疲れちゃうよ。
emacsの場合 ctrl+a したあと ctrl+fしてリージョン打つのもなんだかな、だし
viだったらdd一発!
edならアドレス直行!!(さすがに使わないが)
0091デフォルトの名無しさん
NGNGてか
if () {
...
} else { <-- ここから
...
...
...<--- ここまで
}
を消せばいいんじゃないの?俺はそうしてるけど。
009273
NGNGすげーむかつく。
SELECT COL1, COL2
FROM TABLE1
WHERE ...
こう書け
SELECT
COL1,
COL2
FROM
TABLE1
..
上のは美しいが、死ぬほどメンテしづらい...
009392
NGNG0094デフォルトの名無しさん
NGNG簡単なクエリーしかしないんだね…
0095デフォルトの名無しさん
NGNGなぜそこでctrl+aするか?
マウスやviの場合は行ごとが楽だね。ただ、vi使うような奴は自分で
どうにかできるから、かまうことない。
009687
NGNGあんたの言うとおりだよ。
このかた10年、「elseで改行のほうが実用的」説をかたくなに信じてきたのだが
あまし意味ねぇってことだったな。。。_| ̄|○ (改行の無駄遣い?)
0097デフォルトの名無しさん
NGNGそんなに頻繁にフィールド名変えるのか ?
0098デフォルトの名無しさん
NGNG>なぜそこでctrl+aするか?
行頭にカーソル戻すじゃん。
0099デフォルトの名無しさん
NGNGFROM Claims AS C1, StatusCodes AS C2
WHERE T2.seq
IN (SELECT MIN(S2.seq)
FROM StatusCodes AS S2
WHERE S2.seq
IN (SELECT MAX(S3.seq)
FROM Events AS E1, StatusCodes AS S3
WHERE E1.status = S3.status
AND E1.claimid = C1.claimid
GROUP BY E1.defendant))
0100デフォルトの名無しさん
NGNG長いの書くと
ここだと消えちゃうじゃん。
というか、改行しない書き方でFROMのなかにインラインビューとか使ったりすると
コード書く時間よりも整形する時間の方が長くなってこない?
整形ツール必須 = 不健康 説です。
0101デフォルトの名無しさん
NGNG0102デフォルトの名無しさん
NGNG簡単なクエリーしか書かないんだね…
0103デフォルトの名無しさん
NGNG最初に現れる IN( に対応する閉じ括弧はどこまでですか?
一見してわかりますか?
横にべた書きするとカラム別名、テーブル別名あとから書き換えるとき
面倒じゃないですか?
0104デフォルトの名無しさん
NGNG何でそんなものが必要なのか理解できん。
0105デフォルトの名無しさん
NGNG一番最後の")"に決まってるし、括弧対応エディタ使えばすぐに分かるだろ。
0106デフォルトの名無しさん
NGNG>SQLを整形してくれるのか?
そう。
>何でそんなものが必要なのか理解できん。
だから、俺もそんなんいらないような書き方を心がけている。
0107デフォルトの名無しさん
NGNG0108デフォルトの名無しさん
NGNGいや、だから行頭に戻さずにリージョン開始すればいいじゃん。
0109デフォルトの名無しさん
NGNG君の書き方だと、>>99程度の簡単なクエリでも30行程度になってしまうのだが。
100行を超えたクエリなんぞ見たくもない。
0110デフォルトの名無しさん
NGNGT2ってなんですか?
これ動くんですか?
0112デフォルトの名無しさん
NGNGひょっとして WHEREの前にスペース一つ
FROMのまえにスペース二つ入れちゃってるクチですか?
この板だとよく見えなかったけど。
0113デフォルトの名無しさん
NGNGそうだよ。それが何か?
0115デフォルトの名無しさん
NGNG各クエリレベルでツラを揃えれば階層関係がすぐ分かる。
SELECT
C1.clainid,
C1.patient,
T2.status
FROM
Claims AS C1,
StatusCodes AS C2
WHERE
T2.seq IN (
SELECT
MIN(S2.seq)
FROM
StatusCodes AS S2
WHERE
S2.seq IN (
SELECT
MAX(S3.seq)
FROM
Events AS E1,
StatusCodes AS S3
WHERE
E1.status = S3.status
AND
E1.claimid = C1.claimid
GROUP BY
E1.defendant
)
)
0116デフォルトの名無しさん
NGNGつーか一番深い層のIN(..)条件が違うSELECT分にごっそり切り替わったとき
99の書き方だと書き換えるのがとても面倒ではないですか?
というか結構時間かけてません?
確かに俺の書き方だと縦に長くなるのは弱点なんだけれど(100行、200行は当たり前)
でもブロックで役割分かれるし、長くなっても書き換えの機能性&メンテ性優先にするよね。
0117デフォルトの名無しさん
NGNG>>99のほうが分かり易い。
つか、SQLの記述フォーマットの議論はよそでやってくれ。
0118デフォルトの名無しさん
NGNG>>>114
>つーか一番深い層のIN(..)条件が違うSELECT分にごっそり切り替わったとき
>99の書き方だと書き換えるのがとても面倒ではないですか?
全く面倒ではない。
>というか結構時間かけてません?
時間はかからない。
>確かに俺の書き方だと縦に長くなるのは弱点なんだけれど(100行、200行は当たり前)
>でもブロックで役割分かれるし、長くなっても書き換えの機能性&メンテ性優先にするよね。
99でもブロックごとに役割が分かれてるが。
つか、>>99のフォーマットはオライリーのOracle関連本とJoe Selkoの本のものだ。
わるいけど、俺この話もうしたくない。ごめん。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGうん、だから俺もオライリーのアリ本もってるけど
あの本疑っているんだよね。少なくともフォーマットに関しては。
0121デフォルトの名無しさん
NGNGただ>>115は冗長な感じ。
if (
a == b
&& c == d
&& e == f
)
{
...
}
else
{
...
}
みたいな気持ち悪さがある。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGただ、全てのトークンで改行するのはやりすぎ。
0125デフォルトの名無しさん
NGNGSQLになると行志向に世の中徹しきれなくなるのが
俺にはいまいち理解できん(ぶつぶつ)
012692
NGNG行の途中で来るようには書くなー!ってことなわけさ。
レポート系のクエリならプロトタイプベースで作っていると
Fixするまで列が入れ替わったり追加されたりなんでもありありだし
行単位で入れ替え・削除・追加できるように書いておいたほうが楽なんでねーの?
という話だ。
だいたい、100行程度のSQLでびびっているようでは業務でクエリ書いたことあるやつとはおもえん。
ERP系のデータ(R/3とか)一気に吸い出すクエリなぞ、どんな書きかたしたって
200,300行行くものはざらにある。
0127デフォルトの名無しさん
NGNGオトナ語がいっぱいですね。
0128デフォルトの名無しさん
NGNGアフォ?
100行のクエリがお前の書き方だと500行になるって言われてるんだよ。
あとお前の話つまんねーから、もうこのスレでSQLの話はやめてくれよな?
0129デフォルトの名無しさん
NGNG【ノウ】DBアプリ開発ノウハウ【ハウ】
http://pc2.2ch.net/test/read.cgi/tech/1015807409/
0130デフォルトの名無しさん
NGNGつまり、君は君が考案したフォーマットこそが最も良いものであり、他はそれに劣ると確信
しているわけだ。ということは議論の余地など無いのでは?
今後のシナリオは、君に賛同する者や、賞賛する者が登場するまで、君の持論を繰り返す
以外には無いだろう。
0131デフォルトの名無しさん
NGNG彼にとってはステップ数が一番重要なんだよ。
0132重複?
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1068752664/
★★★コーディングマナー★★★
http://pc2.2ch.net/test/read.cgi/tech/1056508692/
0133デフォルトの名無しさん
NGNG規約 != マナー
0134デフォルトの名無しさん
NGNGいままで引数の頭に下線をつけていたのですが、
どうやら下線で始まる識別子は予約されてて使っちゃ駄目みたいです。
なので変数の命名規約でそれぞれよさげなつけ方ないでしょうか?
ちなみに他の変数は
グローバル変数 g 例 gSystem
スタティック変数 s 例 sSystem
メンバ変数 m 例 mSystem
ローカル変数 l 例 lSystem
引数の変数 ? 例
よろしくお願いします。
ところでgとかsとかmとかlとかも大丈夫でしょうか?
0135デフォルトの名無しさん
NGNGargument
っていうらしいです。ので
引数の変数 a 例 aSystem
となりました。
ご迷惑おかけしました。
0136デフォルトの名無しさん
NGNGhttp://www.microsoft.com/japan/msdn/library/ja/cpgenref/html/cpconnamingguidelines.asp?frame=true
0137デフォルトの名無しさん
NGNG個人的に堅苦しいargumentより好み。
0138デフォルトの名無しさん
NGNGpはポインタに誰かが使ってそうでつ。
0139デフォルトの名無しさん
NGNGハンガリアン記法と混在させるなよ。
そんな事言ったらaはarray、lはlong、sはstringとかあるんだが。
0140デフォルトの名無しさん
NGNG仮引数と実引数って意味じゃないの?
0141デフォルトの名無しさん
NGNG混ぜたらアカン混ぜたら。
グローバル/メンバー/ローカル: スコープの違い。
スタティック/その他(レジスタ等) : 記憶クラスの違い。
引数 : 関数に与えられる式。(括弧の中身)
(おまけ)
パラメータ : 関数の受け取ったオブジェクト。(に付けられた名前)
0142デフォルトの名無しさん
NGNGC の場合)
スタティック:参照可能範囲は1ファイル
引数:参照可能範囲は関数内
0143デフォルトの名無しさん
NGNGglobal
static(外部宣言)
member
local
はスコープの命名だと思うけど。
で、ローカル内の
static(ローカル)と仮引数と普通のローカルの区別を付ける、と。
あとはメンバとstatic(クラス)を区別すれば、
何かで見た気がするけど、機能による命名、だったかな。
0144デフォルトの名無しさん
NGNG> 仮引数と実引数って意味じゃないの?
それはformalとactualと言いわけるね、ふつう。
0145デフォルトの名無しさん
NGNGparameter/argumentでの言い分けも十分一般的です。
好みで使い分けるもんじゃありません。
0146デフォルトの名無しさん
NGNGいいえ。プログラミング言語の教科書(たとえばConcepts of Programming
Languages, R.W. Sebesta)を見てごらん。parameterとargumentでの使い分け
なんてまったく触れられてないから。
> 好みで使い分けるもんじゃありません。
それはあなたの言うことにあてはまりますね。
0147デフォルトの名無しさん
NGNG以下の argument の説明嫁。
アンタに言わせればこれらは間違ってるのか?頭固いよ。
Java言語規定 Java訳語対照表
ttp://www.y-adagio.com/public/standards/tr_javalang/javaterm.htm
Python訳語辞書
ttp://www.gembook.jp/tsum/ds%3Dpdoc/page.pys?wiki=PythonWords
0148デフォルトの名無しさん
NGNGargc, argvはargumentではなくparameterなのか
0149デフォルトの名無しさん
NGNGどっちでもいいよ。
0150デフォルトの名無しさん
NGNGそんなCの話をしてるときにC以外の特定の言語の、しかも固有のterminology
を使ってる仕様書を例として持ち出されても。頭が固いとか柔らかいとかじゃ
なくて、勉強してないんだね単に。
0151デフォルトの名無しさん
NGNG>勉強してないんだね単に。
もう、きみ、理論がどうとか正しいことがどうとかより、
罵り合いに勝てばいいって感じじゃない?
0152デフォルトの名無しさん
NGNGあなたは生まれたときに動くものを見て親だと思ってしまう雛鳥のような人ですね。
勉強が出来るのと自分の知識が正しいと思い込むことは違いますよ。
0153デフォルトの名無しさん
NGNG>In computer science, an argument is an informal term for actual parameter, (略)
0154デフォルトの名無しさん
NGNGそこではそう定義されてるんだね。一般的かどうかは別にして。
0155デフォルトの名無しさん
NGNG"一般的"かどうかってのは個人には判断できないからなあ。
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGまああそこは大人数の目に触れ、しかも誰でも異論があれば簡単に手を出せるので
そこにあり続ける記述はある程度一般性があると期待できるとは思うが。
(見過ごされてるだけの可能性もあるけどね)
0158デフォルトの名無しさん
NGNG0159デフォルトの名無しさん
NGNG○ ファンタスティック
0160デフォルトの名無しさん
NGNGアホらしさ加減は同程度。
0161デフォルトの名無しさん
NGNGそれはハンドルで(hWndなど)使用してしまっているのでダブるんですよ。
0162デフォルトの名無しさん
NGNG実引数/仮引数 という言葉が用いられることがある、と書いてあったけど、
コレって原書では何とかかれているんであろうか。
0163デフォルトの名無しさん
NGNGThe terms "actual argument (parameter)" and "formal argument
(parameter)" respectively are sometimes used for the same distinction.
0164デフォルトの名無しさん
NGNGこう、なんていうか、すぱっと覚えられる理由とか語呂合わせとかないもんかね?
いや、馬鹿でスマン。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG0167デフォルトの名無しさん
NGNGじゃあ、仮引数の k で
0168デフォルトの名無しさん
NGNGconst 変数(つーか定数) の頭に k が付いてるな。
あれはなに? `k'onst?
0169デフォルトの名無しさん
NGNGドイツ語?
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG0172デフォルトの名無しさん
NGNGFORTRUNでもBASICでもそうだったし。
0173デフォルトの名無しさん
NGNG亀レスですが、機能を先頭の一文字だけで表すと、組み合わせたときに判りにくいので、複数文字での記号を先頭/末尾をにつけるようにしています
頭に付ける記号 お尻に付ける記号 備考
pointer p
const c
refference r
struct st or St
class cl or Cl
class member m_ 構造体データ・メンバーも同じ
static Stt 多用するな
global Glb 必要最小限にせよ。記号を Global にしたいぐらい
auto At
argment Ag
virtual 関数 Vl これについては迷っている。付けない事も多い
Polymorphism が重要な役割をしているとき必ず付ける
例
static const int cInOffsetStt = 3;
char f(const char* cpChAg)
{
return *cpChAg++ + cInOffsetStt;
}
変数が char か int より、ポインタか参照か、関数引数か、オート変数かなどの情報のほうが重要と考えます。
0174デフォルトの名無しさん
NGNGでも一画面に収まるような寿命しか持たない変数にAtとかAgとか付けるのはちと冗長な気がする。
複数人でやるときはきちっとしたほうがいいんだと思うけど、基本的には
・短命な変数:無駄に色々つけない。簡潔な名前で十分。慣用的な名前があるならそれを使う。p、i、tmpなど。
・長寿な変数:いつまで生き残るのか、変更するとどこまで影響するのか把握できるような変数名にする。
という感じがいいのかなあと思ってるところ。
ま、あくまで個人的に思ってるだけだけど。
0175デフォルトの名無しさん
NGNG藻前はFortr"a"n を一から勉強しなおせ。
そうすれば i の意味もわかるさ
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG>auto At
>virtual 関数 Vl これについては迷っている。付けない事も多い
突っ込む気も失せる位ナンセンス。
>static Stt 多用するな
グローバルスコープでは積極的に使うべき。
>const c
>refference r
>argment Ag
意識する必要は無いと思われ。
間違った使い方すりゃコンパイラが指摘してくれる。
コンパイラで抽出できないケースもある、とツッコミ入るかもしれんが、
そんなものプレフィクスでは防止できないし。
0178デフォルトの名無しさん
NGNG>177
>const c
>refference r
>argment Ag
>意識する必要は無いと思われ。
const char * cpChAt
char const * pchAt
の意味の違いを明示すべきと考えます。
参照については、pointer の p と同じです。参照引数のとき変数のスコープ
が関数の呼び出し側にまで及びます。参照引数の操作はオート変数以上に注意
を払うべきです。とくに const でないとき。
Arg, At については冗長との説については、半分は理解できます。Stt により
static 変数を明示するとき、他の変数は Stt の付け忘れではないことを明
示する意味が半分です。また temp のような変数名を付けるより chAt のよう
な変数名を使ったほうがましだと考えます。Stt や Glb を設けた結果、
Ag,At を追加したほうが良くなると考えています。
0179デフォルトの名無しさん
NGNG> const char * cpChAt
> char const * pchAt
どっちも同じじゃん。
> struct st or St
> class cl or Cl
これもC++では字面上の違いにしか過ぎない。
その割に、ポインタと配列を区別していないし、本質から外れた命名規約だと感じるがなぁ。
0180デフォルトの名無しさん
NGNGそういう意地悪言わないで教えてやれよ。
ていうか俺も聞きたいです。
0181デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?q=fortran+%E5%A4%89%E6%95%B0+%E6%95%B4%E6%95%B0+%E6%96%87%E5%AD%97&ie=UTF-8&oe=UTF-8&hl=ja&lr=lang_ja
0182デフォルトの名無しさん
NGNGうそだといってほしい・・・
0183デフォルトの名無しさん
NGNG無知が語ってます
0184デフォルトの名無しさん
NGNGこういうコーディング時に手間をかければ、丁寧にやってるって
勘違いしてるやつ多いな。
0185デフォルトの名無しさん
NGNG中途半端はよくない
どうせならここまでやれ
foo.cpp:
void bar(int x)
{
const char *auto_const_char_ptr_func_void_bar_arg_int_x_file_foo_cpp = 0;
}
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGコメントを書くより、名前でひとめでわかるほうが良い。
コメントは保守忘れても気づきにくいからな。
0188デフォルトの名無しさん
NGNG残してくれるヤツなんてほとんどいないのな。
オウム返しのコメントは可か否か・・・これはけっこう微妙な問題。
0189デフォルトの名無しさん
NGNG理由や経緯、想定範囲などのコードに残ってない情報はコメントの価値高いね。
そうでない情報は極力コード自体を読みやすくすることで対応したいな。
0190デフォルトの名無しさん
NGNG>> const char * cpChAt
>> char const * pchAt
>どっちも同じじゃん。
違うぞ。
…と思ったが良く見たら同じだ。騙された。
違うのは
const char * と
char * const だな。
たのむぜ>>178
0191デフォルトの名無しさん
NGNGttp://www.alles.or.jp/~torutk/oojava/codingStandard/
参考になった。
0192177
NGNG>参照引数の操作はオート変数以上に注意
>を払うべきです。とくに const でないとき。
考え方が根本的に間違っとる。
引数が非const参照であることに注意を払うべきなのは、
関数を使う側だけであり、実装者が気にすることでは無い。
「変更するぞ」と言ってるのに、変更したらマズイものを渡され、
変更した責任を問われたらかなわん罠。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG>179 ポインタと配列を区別していないし
これも御指摘どうりです。下の prefix を追加させてください
頭に付ける記号
array ar/Ar
Union un/Un
vector<.> vct/Vct
list<.> lst/Lst
valarray<.> vlr/Vlr
map<.> map/Map
set<.> set/Set
string str/Str
template 関数 tf
template class tc/Tc
>192 「変更するぞ」と言ってるのに、変更したらマズイものを渡され、変更した責任を問われたらかなわん罠。
御意。
本来ならば const refference 引数を渡すことで済ますべき。でも少し複雑な
クラスになると、奇麗事ですまなくなるのも事実。相手が保証してくれても、
現実に保証されるものでもない。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGゴメソ
0197デフォルトの名無しさん
NGNG却下。
> 本来ならば const refference 引数を渡すことで済ますべき。でも少し複雑な
> クラスになると、奇麗事ですまなくなるのも事実。相手が保証してくれても、
> 現実に保証されるものでもない。
それは、普通に間違ってるだけ。
プリフィックスとか、そんなのとは次元の違う問題。
型でプリフィックスつける人は、
template<typename T> void f( T x );
とかいう場合はどうするんだろう?
0198デフォルトの名無しさん
NGNG型でプリフィックスとか言っても
死ぬまで理解出来ないと思う
0199デフォルトの名無しさん
NGNGその場合に限って言えばPrefixは必要ない。
いつつけているか人のソース見てみるといいと思う。
0200デフォルトの名無しさん
NGNGMap actionMap = new HashMap();
ただし、メソッドが単純だったりして、変数の用途が自明の時は、
Map map = new HashMap();
とかやってます。でも、
Map actions = new HashMap();
とはあまり書きません。そして、
Map mapActions = new HashMap();
なんていう奇怪な変数名は、たぶん一生書かないと思います。
キモイです。
0201デフォルトの名無しさん
NGNG> Map actions = new HashMap();
後者の方が情報が多くていいんじゃないですか?
前者はクドイと思います。
0202デフォルトの名無しさん
NGNGMap a = new HashMap();
0203デフォルトの名無しさん
NGNGJavaの世界では>>200が正統派。
Map map = new HashMap();
これが正しい。
0204200
NGNG致命的に型が重要な場合以外、型サフィックスは付けない。
int rows = 0;
String message = "Hoge";
それでも、英語の意味から簡単に型を推測できる変数名を心がけています。
0205デフォルトの名無しさん
NGNG正しい書き方を常に心がけないと、人に見せられないソースになっちゃいます。
0206デフォルトの名無しさん
NGNG型だけの名前で、用途・目的は名前に入れないのか。キモイ・・
0207デフォルトの名無しさん
NGNGそれが受け入れられないなら、Java使う資格ないですね。
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG>>208
一画面程度のプライベートメソッドで
一個しか出てこないテンポラリ的な使い方のときにやるんだよ。
複数必要なシチュエーションで、その書き方はやらん。
0210デフォルトの名無しさん
NGNG0211デフォルトの名無しさん
NGNG10年後にはJava以外の言語はほとんど使われなくなっていますから、
いやでも入信していますよ。
0212デフォルトの名無しさん
NGNGオウムがハルマゲドンを唱えて入信を誘ってるみたいだな。w
0213デフォルトの名無しさん
NGNGSun の奴にはそんな事は書いてないけどね。
> Map map = new HashMap();
は int i; とか char c; とかと同レベルで
一時的な変数なら許されるって程度で
推奨される書き方では無いと思われ。
0214デフォルトの名無しさん
NGNGもう一度読み直せ。
0215デフォルトの名無しさん
NGNGほれ。
Code Conventions for the JavaTM Programming Language
http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
9 - Naming Conventions 内の Variables
http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html#15436
0216デフォルトの名無しさん
NGNGjavaのソース見てみ。
0217デフォルトの名無しさん
NGNGMap map ってのはローカル変数とかには良く使われてるけど、
インスタンス変数とかクラス変数にはあんまり使われて無いぞ。
0218デフォルトの名無しさん
NGNGログ嫁。
0219デフォルトの名無しさん
NGNGMap map は正しいけど Map actions が間違っている
って部分はウソだろって話なんだけど。
J2SE のコアクラスライブラリにだって
Sunのコード規約を守ってない箇所なんかいっぱいあるし、
J2SE のコアクラスライブラリで使ってないからといって
即座に間違いというのも短絡的だと思うぞ。
0220デフォルトの名無しさん
NGNG2つ以上だったら
Map hitMap; // 当たり判定用
Map baseMap; // 地形表示用
とかつけて、何に使うのか分かるようにするのが普通のJava使いだと思う。
0221デフォルトの名無しさん
NGNGMap が一つしかない場合に Map actions は正統派でない、正しくない、
ってな風に >>203 が書いてるんだよ。
int i は良いけど int val はダメって言ってるのに近いように見えるんだが。
0222デフォルトの名無しさん
NGNGログ嫁。
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGそんなもん、もうメンテナンスもされてないしSunじゃ誰も使ってないぞ。
0226デフォルトの名無しさん
NGNG長年悩んできた
「引数のエラーチェックを外でやるか中でやるか」
と言う問題に。
俺的な結論は「中でやる」ということになった。
理由は、その関数を1000箇所以上で使っていたときに
外でチェックをかけるとすると1000箇所でチェックをしなければならない。
ということに今更気が付いたからw(おせーよw)
さらにこれと同じような問題で、戻り値でエラーコードを返すってのも、
個人的には没にしたくなってきた。
失敗する可能性のある関数の戻り値はすべてboolでやってtrueかfalseのみを
返すようにしてエラー後の詳細な処理はできるだけ関数の中でケリをつけるようにする。
ってのがいいと思えてきた。
外にエラー内容を伝える必要があるときはもっと別の方法でやるべきだと思っては
いるんだが、いい方法が思いつかないのが現状だったりするw
ちなみに現行ではトラブったとき関数を用意しておいて、
戻り値にfalseが返ったらトラブったとき関数を読ぶと直前のエラー内容を取得できるような作りにしてある。(へぼっw)
0227デフォルトの名無しさん
NGNGエラーコードの代替はC++/Javaとかの例外が使えるんじゃないの?
0228デフォルトの名無しさん
NGNGthrow std::runtime_exception("アフォか?");
0229デフォルトの名無しさん
NGNGところがC言語あがりのC++プログラマなので
例外処理なんてどうやって使ったらいいのかってところの前の
存在から知らんのですよw
0230デフォルトの名無しさん
NGNGその食わず嫌い、5年前の俺を見てるようだな。
226みたいな悩みは例外使えばきれいに解決できるんだが。
0231デフォルトの名無しさん
NGNG関数の引数としてエラー処理関数を渡す
0233デフォルトの名無しさん
NGNG自分で例外クラス作って、例外投げる時はthrow、例外を受け取って
エラー処理する時はtry〜catch、だけだけど。イメージ沸かないなら
C++で書かれてるソース拾ってきて眺めてれば大体分かるでしょ。
0234デフォルトの名無しさん
NGNGところがこれがまたわからないんですよ。
ネスト多くなって見難くくなるのでtryとか嫌いなんですよ。
例外を飛ばすってのもまたわからないですね。
エラーが出たら出たところでチェックするのが一番ですよね。
そんな長い関数なんて書きませんし。
0235デフォルトの名無しさん
NGNG>ネスト多くなって見難くなるので
まとめられる/まとめるべき try-catch を全部バラバラに書いてないか?
まあそうでないにしろお前にはセンスがなさそうだ。
0236デフォルトの名無しさん
NGNGerrno = 〜;
return false;
が
throw new 〜Exception();
ですむということではなかろうか
ret = func1();
if ( ! ret ) { // エラー1 }
ret = func2();
if ( ! ret ) { // エラー2 }
が
try {
func1();
func2();
} catch ( 〜Exception1 e ) {
// エラー1
} catch ( 〜Exception2 e ) {
// エラー2
}
となるということではなかろうか
0237デフォルトの名無しさん
NGNGerrno = 〜;
return false;
が
throw new 〜Exception();
ですむということではなかろうか
ret = func1();
if ( ! ret ) { // エラー1 }
ret = func2();
if ( ! ret ) { // エラー2 }
が
try {
func1();
func2();
} catch ( 〜Exception1 e ) {
// エラー1
} catch ( 〜Exception2 e ) {
// エラー2
}
となるということではなかろうか
0238236
NGNG正常時の処理である
func1();
func2();
func3();
という流れがそのまま書けるということ
もし,各関数の直後にエラー処理の分岐があると,この流れが断ち切られて可読性が大幅に下がる
try {
func1();
func2();
func3();
} catch〜
と
ret = func1();
if ( ! ret ) { // エラー1 }
ret = func2();
if ( ! ret ) { // エラー2 }
ret = func3();
if ( ! ret ) { // エラー3 }
で正常時の処理の流れが分かりやすいコードはどちらか?
0239デフォルトの名無しさん
NGNGtry {
selectFoo();
selectBar();
updateHoge();
commit();
} catch (SQLException e) {
rollback(); log(e);
}
例外に慣れたら他の書き方など考えられんよ。
0240デフォルトの名無しさん
NGNG>if ( ! ret ) { // エラー1 }
俺なら逆だな
んで、
if((ret = func1())!=0){ // エラー1 }
if((ret = func2())!=0){ // エラー2 }
if((ret = func3())!=0){ // エラー3 }
で正常時の処理の流れが分かりやすい
0241(〃▽〃)<ヒミコミコミコヒミコミコ♪
NGNGboolean expressionにfunction入れるのは読みづらいのだ。
0242デフォルトの名無しさん
NGNG事前条件を満たすのは呼び出し側の責務。
0243デフォルトの名無しさん
NGNG肝心のエラー処理部分がコメントになって1行で書けているから読みやすいだけで
普通は複数行のエラー処理になるはず
それに1つの関数から発生するエラーが1種類だけとは限らない
すると1つの関数呼び出しが無駄に間延びして読みにくくなる
0244デフォルトの名無しさん
NGNG> すると1つの関数呼び出しが無駄に間延びして読みにくくなる
じゃあ読みにくくならないようにするにはどうしたらいいの?
0245デフォルトの名無しさん
NGNG全てのエラーをVBでいうならば、Goto Err_xxxxx のようになにがしかの
エラーが出たらエラーダイアログを出す行へ飛び、エラーを表示。
そのエラー表示も訳のわからない内容ではなくてエラーモジュールやら
error.hのようなものから呼び出し、表示する。
errorモジュールが読み出す元はIMEやATOKのように辞書を用意しそこ
から紡ぎ出すようにする。
であるから、辞書の内容をそれぞれの分野やアプリに付属したり、その
辞書を公開したりすることでより辞書は充実してゆく。
そんなエラーをモジュールを各コンパイラ向けにオープンソースモデル
で出ないかなぁ。辞書なのだから独自のライブラリやocxを流用したアプ
リ向けに作り込んでゆく。
0246デフォルトの名無しさん
NGNG今までの話の流れで行くと
例外処理機構を使って正常時の処理と異常時の処理を別々に書く
0247デフォルトの名無しさん
NGNG例外使わずにコンパクトに書ける方法はないの?
0248デフォルトの名無しさん
NGNGそれがないから例外が発明されたんじゃないかのう
0249デフォルトの名無しさん
NGNG厨も出てくるけど・・・
0250デフォルトの名無しさん
NGNGあんまり役に立ってねぇよな>例外
try〜catchを使って飛ばすほど長い処理ってかかねぇし、
やっぱりエラーはその都度その場で処理したほうが
複雑にはならない。
0251デフォルトの名無しさん
NGNG役に立ってますよ。
処理の長さは関係ないですし、
エラーを「検出したその場」で処理するのは「不可能」なケースのほうが多いです。
エラー処理がexitだけなら可能かもしれないですが。
0252デフォルトの名無しさん
NGNG>エラーを「検出したその場」で処理するのは「不可能」なケースのほうが多いです。
多くねー。
0253デフォルトの名無しさん
NGNG・下位で発生したエラーを上位に伝達するのがマンドクセ(ステータスだけ
なら戻り値でいいが、詳細なエラー情報を返すシンプルな方法は無い)
・かと言って下位でエラー検出したその都度ダイアログ表示とかやって
しまうと、後でエラー処理方法を変更したい場合に困る(こっちから呼んだ
時はダイアログ表示しないでログに吐くだけにしてくれとか)。
・エラーが発生しても、それをどう扱うかは上位次第(ファイルがオープン
できなくても別の方法で処理続行するようなケースもあるし、その場合
ダイアログ表示なんてして欲しくない)。下位側でエラー処理方法が決め
打ちされてるのは、上位側から見ると汎用性が薄くて使いにくい。
・呼び出しがネストしてる時に、一気に最上位まで戻れない(ステータス
返して1段1段戻って行くしかない)
辺りで、こういうのは例外使えば解決できる。
(というか例外が無ければすっきりとは行かない)
0254デフォルトの名無しさん
NGNGこれ例外(ここではtry〜catchってことで話すけど)使った程度じゃ解決しねぇよ。
0255デフォルトの名無しさん
NGNG例えばどんなケースがある?
0256デフォルトの名無しさん
NGNGどんなケースがあるとかじゃなくて
例外使ったからってどうなるものでもないでしょう。
0257デフォルトの名無しさん
NGNG254のように言い切るって事は「例外使ってもどうにもならなかった」という
ケースがあったんだろ?ならそれを書いてみてくれ、と言ってるんだが。
0258デフォルトの名無しさん
NGNGつか俺が例外使うとことごとく上手くいかないw
ネストネストネストネストになるか。
try〜catchばかり増えて非常に見難い感じ。
0259デフォルトの名無しさん
NGNGそれは例外の使い方がいまいち、というか戻り値ベースのエラー処理の
やり方を単純にtry〜catchに書き直しただけで、例外処理機構の「おいしい」
所を使ってない状態だと思う。
例外の使いどころが分かってないとそう書いてしまいがちだし、それだと
「なんだよ糞面倒くせえ。これなら戻り値チェックした方がマシじゃねーか」
と思うだろうね。かつては俺もそう思ってたし。
例えばだけど、続行不可能な致命的エラーと続行可能なエラーに2分して、
最上位では致命的エラーのtry〜catchをまとめて引き受け、下位側では
続行可能なエラーのみをtry〜catchする、みたいにすれば、致命的エラー
をいちいち捕まえてその都度エラー表示する、みたいなコードは書かなくて
済むはず。
リソース解放が絡んでcatchせざるを得ない場合でも、リソース解放したら
そのまま上位にthrowしちまえばいいし、C++だったらauto_ptr使ったりクラス
化してデストラクタで自動解放させるようにすると、下位側は全くcatchしな
くて済む事もあるので、そこまで来るとすんげー楽できる。
0260デフォルトの名無しさん
NGNGいちいち例外クラスをつくらにゃならん、例外仕様は使えねぇ。
ってのがなぁ。
0261デフォルトの名無しさん
NGNG例題を作って解説してくれるエロイ人キボン。
と思ったけど、ここで大体理解できたからいいや。
ttp://msugai.fc2web.com/java/error.html
0262デフォルトの名無しさん
NGNG例外は catch しない限りどんどん上位の階層の関数呼び出しに伝達する
ってことは理解しているよね?
0263デフォルトの名無しさん
NGNG>253はまさに「例外処理を使えばこんなに便利」なことを示すための
「うまくいく」例なんだが、、、
失敗した具体例を示してくれれば
「こうすればスマートにできたのに」て
解決策を見せてあげられる可能性が高いんだけど。
0264デフォルトの名無しさん
NGNGつーかメソッド宣言の後ろにつけるthrows(sついてる)を
知らないんじゃ、、、、
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG0268デフォルトの名無しさん
NGNG>ダイクストラの名前から、という説もあり
そんな説聞いた事ないぞ。
0269デフォルトの名無しさん
NGNG> そんな説聞いた事ないぞ。
知らないの?結構有名なジョークなのにw
0270デフォルトの名無しさん
NGNGttp://www.cs.utexas.edu/users/UTCS/notices/dijkstra/ewdobit.html
i, j, k の次は s か?
0271デフォルトの名無しさん
NGNG呼び出し側を書くのがお前みたいな厨じゃないと保証されるなら、俺も同意するよ。
0272デフォルトの名無しさん
NGNGcontinuation.
ttp://www.sra.co.jp/people/aoki/SmalltalkTextbookJ/textbook27.html
0273デフォルトの名無しさん
NGNGdouble f,d;
0274デフォルトの名無しさん
NGNGどっかのスレでかいてあったぞ。
Fortran以来の古い慣習だ。
ネットでFortranの文法ググってみ。
0275デフォルトの名無しさん
NGNG最古の高級言語フォートランから続く慣習
フォートランはまた数学表記の慣習からきている。
行列やベクトルの要素をあらわすときAi Aij とか高校の教科書に
あったろ?
(ijは下付文字で)
0276デフォルトの名無しさん
NGNGつーのをやらされた。みんなヤッテランネーつーことで
1プロセス1関数1ファイルなんつーのが数百も、、、
発注元に抗議してもウチの会社のナンタラカンタラ
クライアントとのナンタラカンタラ
規約決めたやつは早々にブッ倒れて入院しちゃうし、
代わりに来たヤツはなんで関数が番号なんだとか1関数がこんな長いんだとか
テメーんトコで飼ってるヴァカのせいだっつーの。
FF○潰れろ。潰れちまえ。
0277デフォルトの名無しさん
NGNG管理するソフトがあれば悪くないかもしれんぞそれ
0278デフォルトの名無しさん
NGNG全部XXX9999X形式だったな。3桁が使用箇所の識別で9999が管理コード、Xが
コンソールかオンラインかの識別子。
もっとも、何が何を表すか知らないとサッパリだけどな。仕様書の検索は楽だけど。
0279デフォルトの名無しさん
NGNG関数やモジュール名にコード番号をつけるのは
手書きドキュメントに索引つけて更新管理する手間を
省くための知恵。
PDFとかワードとかjavadocのHTMLとか検索可能な
電子テキストが標準となった今では無用の長物だな。
コードや番号のみってのは論外。
0280265
NGNGみなさん詳しいというか、雑学強いですね。
どこで身に付けるのやら。
int i じゃないと気分悪かったりするので不思議です。
0281デフォルトの名無しさん
NGNGお前が物知らずなだけだ
0282デフォルトの名無しさん
NGNGワードは勘弁しろ
HTMLも自動生成は楽だが手では弄りづらい
PDFはもっての外
・・・何がいいんだろう。プレーンテキスト?
0283デフォルトの名無しさん
NGNG脳みそ無いの?
0284デフォルトの名無しさん
NGNGただ、全ての現場でそういう事ができるとは限らないが。
(アフォな上司とかアフォな品質管理Gとかがゴリ押ししてきたり)
2〜3人でやる小さなプロジェクトまでだったらどうにでもなるけどねぇ。
0285デフォルトの名無しさん
NGNGあ、脳みそないみたいね、君。
0286デフォルトの名無しさん
NGNGお願いだから EXCEL をドキュメントに使うのは止めてくれ
0287デフォルトの名無しさん
NGNG0288デフォルトの名無しさん
NGNG0289r
NGNG1プロセス分のコードを一つの関数にまとめたりするような置換用の
スクリプト?とか、書くの大変だと思う。
置換したら、また最初っから試験しなきゃだしね。
0290デフォルトの名無しさん
NGNG実行プロセスが数百個並んで走ってるシステムを想定してませんか?
ぶっちゃけありえない。
0291デフォルトの名無しさん
NGNG0292r
NGNG#define HUGA a = a &&
#define HAGE if( ! a )
としておいて、
int foo() {
HOGE;
HUGA func1() == 0;
HUGA func2() == 0;
HUGA func3();
HAGE errorHandle();
}
としてはどうだろうか。
0293デフォルトの名無しさん
NGNG俺はあんまり多分野やらんけど、車屋の工場管制なんかは
余裕で数百走るよ?
0294デフォルトの名無しさん
NGNGリクエストがあってからプロセス起こすとオーバーヘッドでかいから
とりあえず上げるだけ上げとくみたいな。
数百のプロセスが(プロセス間の)同期も取らずに一斉に動いたら
流石にまともには動かん。
0295デフォルトの名無しさん
NGNG0296デフォルトの名無しさん
NGNG子プロセスはプロセスではない?
0297デフォルトの名無しさん
NGNGUnix とかなら、みんな init の子孫だと思うが。
0298デフォルトの名無しさん
NGNG新人PGだが仕事でVBやってんだけど、プロシージャの
前にコメント付けてくれという要望が来た。関数名とソース
を読めばだいたい分かるように書いてたんだけど、
それじゃ不満なんかな。無論分かりにくいと判断した
部分にはきちんとコメントを入れている。
プロなんだから、cmdSearch_Click が何を意味しているか
くらい分かるだろうと思うんだが。ただでさえ3次請けで開発
期間が短いんだから時間がもったいない。残業はサービスだし。
0299デフォルトの名無しさん
NGNGわからん。
0300デフォルトの名無しさん
NGNGそういう奴は「プロではない」から仕方ない。
0301デフォルトの名無しさん
NGNGSearch がサーチで
Click がクリックなのは推測できるが
それの関連については cmdSearch_Click だけでは
さ っ ぱ り わ か り ま せ ん
0302デフォルトの名無しさん
NGNGVBやってる人?
0303デフォルトの名無しさん
NGNG「ナニをするか」は分からんもんな。
そもそもその検索ボタンを押すと何を検索するのかすら
どこにも書いてないんじゃない?
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNG0306デフォルトの名無しさん
NGNG0307デフォルトの名無しさん
NGNG……馬鹿にでも分かるように。
0308デフォルトの名無しさん
NGNG馬鹿にでもわかるコメントなんか書けるんか ?
未来の自分にわかればそれで充分だろ。
0309デフォルトの名無しさん
NGNG0310デフォルトの名無しさん
NGNGいや、馬鹿にでも分かるようにコメントを書いておかないと
未来の自分にも分からなくなっている可能性大。
0311デフォルトの名無しさん
NGNG0312デフォルトの名無しさん
NGNG0313r
NGNG0314デフォルトの名無しさん
NGNG>>304-306
0315デフォルトの名無しさん
NGNG保守担が関数の実装コードを読まなくて済む程度にはコメントしてるつもりだよ。
正直、コード読んでくれってのは最終手段だよな。
0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG> 正直、コード読んでくれってのは最終手段だよな。
反対だろ ?
コードではちょっと伝えきらないところをコメントで補うんじゃないのか ?
0318デフォルトの名無しさん
NGNGコード自体をコメントとみなせば。
0319デフォルトの名無しさん
NGNGコメントはコードの繰り返しであり、極力避けるべきであるから。
0320デフォルトの名無しさん
NGNGダウト。そんなコメントは存在する意味がない
0321デフォルトの名無しさん
NGNG> そんなコメントは存在する意味がない
ダウト。存在が「有害」である。
修正する時、余計な手間がかかるからな。
0322デフォルトの名無しさん
NGNGreturn FALSE /* 戻り値 異常 */
とかやってそうで嫌
0323デフォルトの名無しさん
NGNGそういう場合はコメントが不要なようにコードを書き直すべきでないかい?
> コメントはコードの繰り返しであり、極力避けるべきであるから。
これはコメントの仕方が悪いだけでないかい?
「コードの繰り返しとなるようなコメントは避けるべき」であって
「コメントがコードの繰り返し」であるわけじゃない。
で、俺は今 >>298 の言う「プロシージャの前のコメント」について話してるつもりなんだが、
ふつうプロシージャの前のコメントってのは他のプログラマとも共有している既に決定された仕様が書かれているわけで
他のプログラマはプロシージャが実装される前からコメントに書かれた仕様を読んでスタブを使っているわけだ。
だからもしコメントとコードが一致しなくなったら変更すべきは可能な限りコードの方であってコメントではないと思うんだが、
そこらへんどうよ。
0324デフォルトの名無しさん
NGNGダウト。間違ってる方を直せ(w
0325315==323
NGNGそれ、コード読んでる。
コード読ませないってのは、関数の実装部を全く読ませないってこと。
/* 普段は読むのココだけ */
hogehoge()
{
/* ココは読まない */
}
0326デフォルトの名無しさん
NGNG> ダウト。間違ってる方を直せ(w
サンクス。その通りだ。
でも希に「下位互換として前の版のバグもエミューレートしてくれ」って指示があることもあるので
あくまで一般的な優先順位を
降ってきた仕様 > 共有しているコメント > 担当しているコード
と考えてるってコトで。
0327デフォルトの名無しさん
NGNG>ふつうプロシージャの前のコメントってのは他のプログラマとも共有している
>既に決定された仕様が書かれているわけで
この辺って普通、紙の書類あるじゃん。
それじゃダメなのかな?
0328デフォルトの名無しさん
NGNG> でも希に「下位互換として前の版のバグもエミューレートしてくれ」って指示があることもあるので
それは、「前の版のバグ」が「正しい仕様 (=今回のコードが間違っている)」となってるだけのこと。
0329319
NGNGi = 1 // i に 1 を代入する
みたいなのが問題外なのはもちろんだが、
そうでないものでもコードのやっていることを要約してコメントとして表している以上、
コメントがコードの繰り返しであることにはかわりはない。
もちろん、複雑な処理には適切なコメントをつけたほうが理解に役立つが、
コメントをつけずに済むのならそれに越したことはないってことを言いたかった。
0330デフォルトの名無しさん
NGNGそもそも実装部のコードは読ませないんだからコードにコメントなんて滅多に書かない。
コメント書くのは関数の説明と、何か異常があったところ。
「実装コードを読まなくて済む程度のコメント」ってのは、そういう意味。
「コメント=コードの繰り返し」については、
イメージしてるコメントが微妙に違うような気がする。
// 関数 xxx は使うな。
// 無駄に思えるが関数 yyy の返値から自前で計算しなければならない。
// [BUGxxxxx.txt] より
// xxx 以前の古いドライバは関数 xxx に誤った値を返す。
// ここでは要求された x の値として y を利用しなければならない。
// [BUGxxxxx.txt] より
// 関数 xxx のバグのため x と y の値は逆になって返ってくる。
// このバグは現在も互換性のために残されている。
みたいのはコードからは読みとりづらいし
コメント書いとかないとだれかが間違いだと思って直しちゃうぞ。
0331デフォルトの名無しさん
NGNG* お菓子を置いて帰っても良い。小人さんは喜んで、またやって来るだろう。
* お菓子以外を置いて帰ってはいけない。小人さんは怒って、あなたのもとを去るだろう。
* 民明書房「ブラウニー伝承における嘘と真実」
*/
0332デフォルトの名無しさん
NGNGつーか直せよ(w
0333デフォルトの名無しさん
NGNG直すなよ(w
0334デフォルトの名無しさん
NGNG違う
やっていること(How)をコメントするだけなら意味が無いと言っている
なぜ(why)とか何の目的があって(what)を書け
0335デフォルトの名無しさん
NGNGそうそう。why/what書かない奴多いんだよね。
それこそがコメントとして一番書いておいて欲しいところなのに。
仕様書にちゃんと明記してあるならいいけど、why/whatコメント
書かない奴はまず仕様書にも書いてないし。
で、後を引き継いだ奴が「なんでこんな処理が必要なんだ?」と
悩んだり、新規で作った部分でその処理が抜けてて「以前対策
したじゃないか」なんて責められたりする。
そんなんどっかに書いといてくれなきゃ分からんがな…
0336デフォルトの名無しさん
NGNGdoubtなら用法がおかしいと思うんだが。
0337デフォルトの名無しさん
NGNG相手が嘘をついてると思った時に「ダウト!(そいつは信じられないねぇ)」って叫ぶやつ。
0338「なぜ」と「何の目的」って一緒やろ。
NGNG> doubtなら用法がおかしいと思うんだが。
どうおかしいか書いてみてや。
つーか、そんなもん指摘する暇あったら「何の目的があって(what)を書け」の方を指摘した方がええんとちゃうか ?
0339デフォルトの名無しさん
NGNG何の目的で: 遊ぶ金を奪うため
バールのようなもので処理する関数。
0340デフォルトの名無しさん
NGNGdoubt一語で済ませるのは聞かん気がする。
トランプのダウトも、英語では"Bullshit"または"I doubt it"のようだ。
0341デフォルトの名無しさん
NGNGまあ、相手の言ってることにケチつけるときの掛け言葉みたいなもんだろ。深く考えないほうが吉。
0342デフォルトの名無しさん
NGNGるんだから、結構便利な目印だよ。
0343デフォルトの名無しさん
NGNG0344デフォルトの名無しさん
NGNG叫んでから間違いを指摘するってのがあったけど、それからな気がする…。
…もしかして年がばれる?
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG俺等は「ダウト!」なんていわないで「まんこ!」って叫ぼうぜ。
0347デフォルトの名無しさん
NGNG「バカ!バカ!まんこ!!」
0348デフォルトの名無しさん
NGNGあれから10年ぐらいはたったかな?
いずれにしろそんなに年、逝ってるって訳じゃないな。
0349デフォルトの名無しさん
NGNG中学生になった頃、それが一般には「ダウト」と呼ばれていることを知った。
0350デフォルトの名無しさん
NGNGもしかして、お前みっちゃんか?
0351デフォルトの名無しさん
NGNGあの頃のマイ○ル富岡は面白かった。
0352デフォルトの名無しさん
NGNGハウスルール(地域差含む)でたまたま一緒になっただけじゃないの
九州だがざぶとんとダウトは違う
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGポインタにはpかな?
0356デフォルトの名無しさん
NGNG述語には?
0357デフォルトの名無しさん
NGNGFORTHか?
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG0360デフォルトの名無しさん
NGNGsetf
0361デフォルトの名無しさん
NGNG>そういう場合はコメントが不要なようにコードを書き直すべきでないかい?
それ大事。
'データチェック
'もしもデータが正しければ
If DataCheck(Data) = False Then
とか書かれると、 DataCheckの中を見ないと安心できない。どうしても
「正しいときにFalseなのか?」と思ってしまう。場合によりけりだからなおさら。
ここは
If IsValid(Data) Then
みたいに書いてもらえれば(これだとFalseの意味が逆転してるが)
コメントがいらなくなる。
よく考えるとコメントって、コンパイラがチェックしてくれないから
ある意味バグの温床というか可読性を下げかねない諸刃の剣なんだよな。
あと、いわゆる関数ヘッダなんかをコピペで量産することがあるけど
なぜか「'プロシージャ名: IsVarid」とか「戻り値: Boolean型」とか
おまえヘッダでコードの繰り返し書いてどうするよ、このフォーマット
考えた馬鹿はドイツだよ、っていうヘッダをよく見ませんか?
こういうコピペコメントは本人のコメント作成能力を量的に超えている
ことがあるから、そうなると簡単に放置によるコードとの食い違いが
起こるんだよな。
0362デフォルトの名無しさん
NGNG>If IsValid(Data) Then
'データチェック
のコメントぐらいは欲しいな。
DataCheck(Data)みたいな、わかりやすい関数名ならいいけど。
関数名だけで処理がわからない場合は、
結局、中をみないと安心できない。
関数ヘッダの無意味なコピペは同意だな。
時間が無くなって来ると、ヘッダの中身を直さなくなるから、
後から見たとき支離滅裂。
ただ、関数ヘッダ自体はラベルの機能もあるから、
あった方が助かるんだけど。
誤解を生むようなコメントなら無理して付けるより
削除してくれたほうがいいな。
0363デフォルトの名無しさん
NGNGIf (this) is valid data then 〜
ってそのまま
「(この)データが正しければ〜」
だし、「データチェック」なんつうコメントは余計だと思う。
個人的にだが。
0364デフォルトの名無しさん
NGNG同感。どうしてもそこでコメントつけるなら、むしろIsValid(Data)の中で特
に何を検査するのか、どうしてそれを検査すればvalidだと言えるのかを書い
ておくやり方のほうが好き。
0365デフォルトの名無しさん
NGNGそれはIsValid()の定義の側にかくべきコメントだろ。
使う側でいちいちIsValidの中身書いていたら、チェック内容が変わった時に
使っている側全部変更してまわらなければいけなくなって大変だし、
昔のコメントが残っていたらそれはそれで害になる。
0366デフォルトの名無しさん
NGNG> それはIsValid()の定義の側にかくべきコメントだろ。
だから「どうしてもそこでコメントつけるなら」って書いてあるんだろ。
IsValid()が自分で編集できるファイル内にあるとは限らんし。
0367デフォルトの名無しさん
NGNG自分で編集できないファイルっていうのはライブラリのことか?
それはライブラリリファレンスを用意するからソースへのコメントはいらないだろ。
0368デフォルトの名無しさん
NGNGソースのコメントを原本として、ライブラリリファレンスを生成するメカニズムがあるのが理想だね
0369デフォルトの名無しさん
NGNG納品用ドキュメントはソースと別にjavadocで作るので一粒で二度おいしいです。
0370362
NGNGごめんな。漏れが頭悪いだけなのかもしれんが、
IsValidって名前で、エラーチェック関数だと推測はできないわ。
こんな頭悪い香具師もいるんだから、
'エラーチェック
のコメントは欲しい。
コーディング規約とかで、エラーチェック関数の名前を統一してるなら、
無くてもいいけど。
>>364の言うようなコメントも、漏れ的には書いてあるほうが嬉しい。
後からソースを修正するときに、情報は少しでも多いほうが助かる。
もちろん、無意味なコメントや、誤ったコメントは問題外だけど。
0371デフォルトの名無しさん
NGNGげげ
0372デフォルトの名無しさん
NGNG> IsValidって名前で、エラーチェック関数だと推測はできないわ。
お前が頭悪いだけ。間違いない。
0373デフォルトの名無しさん
NGNGエラーとは思わない。エラーだったら素直にIsErrorにするだろうから。
0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNGもともと361ではデータチェックの話をしてるんだからIsValidで問題ない。
0376デフォルトの名無しさん
NGNG>>370で 'データチェック から 'エラーチェック に化けたのか…
0377デフォルトの名無しさん
NGNGwindowsの矩形無効化の Invalid() なんてのは、無効化ではあるがエラーではない。
0378デフォルトの名無しさん
NGNGinvalid adjective
0379デフォルトの名無しさん
NGNGこのスタイルに何か合理的な理由があるんですか?
0380デフォルトの名無しさん
NGNG別にGNUそのものをどうこうとは言わないが、アレだけはなんとかしろと言いたい。
どういった経緯でああなったのかは、確かに疑問ではあるな…
0381デフォルトの名無しさん
NGNGはっきり区別できるようするためとか。
もちろん冗談だけど。
0382デフォルトの名無しさん
NGNG思わず天を仰いだな。
0383 ◆SweetH.1rE
NGNGif (...){
...
}
とかじゃなくて、
if (...)
{
...
}
らしいよ
0384デフォルトの名無しさん
NGNGダメな体になってしまった。
インデントの高さとカッコの高さを合わせた方が間違い少ないと思うが。
0385補足
NGNG0386デフォルトの名無しさん
NGNG0387デフォルトの名無しさん
NGNG0388デフォルトの名無しさん
NGNG良いか悪いか、わかりやすいか否かに合理的な説明がつかないし。
つきつめると結局は慣れているか否かだし。
そういうときは、権威主義でK&Rにした。
権威のせいにすればみんな納得(w
JAVAならsunか ?
0389デフォルトの名無しさん
NGNG後でgrepして直せばいいと思うんだが...
0390デフォルトの名無しさん
NGNGPythonなんか悩む余地無いぞ
0391デフォルトの名無しさん
NGNGcb 通せば統一出来る程度のスタイルの違いは
問題にする時間が惜しい。
0392デフォルトの名無しさん
NGNG括弧の位置は悩まなくていいが、SPACEインデント派とHTABインデント派
の争いは避けられないような(w
0393デフォルトの名無しさん
NGNG0394デフォルトの名無しさん
NGNGif() {
}
と
if()
{
}
前者は、ifのブロックであることを強調し、
後者はブロックの対応性を強調する。
0395デフォルトの名無しさん
NGNGif () {
...
}
B宗:
if ()
{
...
}
と置いてみるテスト
今までA宗だったけど、Windowsでしばらくやってみて、Win32の複雑なAPIだと
条件式が長くなりがちだから、B宗のほうがいいような気がしてきた今日この頃。
プログラミング言語C第2版、プログラミング言語C++第3版、Effective C++がA宗なので
こっちにあわせてたんだけど。
0396デフォルトの名無しさん
NGNGBだと縦に間延びしてしまって、一画面に入るソースコードの量が少なくなる…
画面小さいんだよヽ(`Д´)ノ
書籍系でAってのも実はそれが理由かもなー。
紙面無題に使いたくないだろうし。
でも条件式が長くなる場合はBで書くこともある。
0397デフォルトの名無しさん
NGNGif(){
}
0398デフォルトの名無しさん
NGNGそれ、本気でやったらGNUよりもキツイぞ(笑)
0399デフォルトの名無しさん
NGNGif(){
}
長いとき
if(xxxxxxx
0400デフォルトの名無しさん
NGNGif(xxxxx
xxxxx
xxxxx
){
}
0401デフォルトの名無しさん
NGNGfoo = xxxxx xxxxx xxxxx ;
if( foo ){
}
と書くからね。
0402デフォルトの名無しさん
NGNGif (foo)
{
xx
}
>>401のソフトの改造は嫌だ。
0403デフォルトの名無しさん
NGNGなんで?
0404デフォルトの名無しさん
NGNG>>395だとA宗だな。
>>396
昔の会社で「ステップ数稼げるからB!」とか言ってる奴がいた(;´Д`)
0405デフォルトの名無しさん
NGNG} else if(bar) {
} else {
}
0406デフォルトの名無しさん
NGNG{
}
/*
こめんと
*/
else if (bar)
{
}
/*
コメント
*/
else
{
}
0407デフォルトの名無しさん
NGNGif(hoge){
}
ef(foo){
}
ef(bar){
}
0408デフォルトの名無しさん
NGNGだろ
0409デフォルトの名無しさん
NGNGコロンブスの卵だな。そっちに転びたくなってきた。
0410デフォルトの名無しさん
NGNG正気か?
条件式の長さによって、中括弧の位置が変わるんだぞ。
if( hogemoge ==0 ){
if( foo==0 ){
}
}
if( bar!=0 ){
}
こんなソースあったら、漏れは燃えないゴミに出すね!
0411デフォルトの名無しさん
NGNGていうか、C宗はやっぱあれじゃん? GNUの。
0412デフォルトの名無しさん
NGNG0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNG0415デフォルトの名無しさん
NGNGどういう点がカスなのかな?
0416デフォルトの名無しさん
NGNG0417デフォルトの名無しさん
NGNG整形すればいいだけというわけにはいかないし。
0418410
NGNGどう見たって燃えない(萎える)ソースじゃないか。
しょーもない事だけ書き込むのは何なので、GNUスタイルの参考リンク。
ttp://www.sra.co.jp/wingnut/standards/standards-ja.html#SEC_Top
#漏れ的にはコレも燃えない
0419デフォルトの名無しさん
NGNG言語ごとの癖に合わせるのがいい加減面倒臭い
0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNG0422デフォルトの名無しさん
NGNG全員SQLerになってもらいます。
0423デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1087209526/106-121
> 106 名前:デフォルトの名無しさん[] 投稿日:04/07/29 23:43
> ところで値を返す関数の名前は名詞にしたほうがいいと思うが、getってつける人が多いな。
> 式の途中にget(動詞)があると読んでてキモくない?
0424デフォルトの名無しさん
NGNG> だからプロパティという概念を軸に発想しろっての
プロパティという概念を軸に発想したからって、
読み取り操作に常にgetが現れるのは必然にはならないだろ。
> お前はあらゆるプロパティのsetterに適切な動詞が存在するとでも思ってるのか?
プロパティの設定についてはこの話と直接関係は無いが、
適切な動詞が存在するものはそっちを優先したほうが
抽象度が上がって良いような気がする。
> (set/get, 名詞/動詞のルールの)一貫性が損なわれているのは間違いないだろ。
一貫性が既にできあがってるところに一つ混ぜるって話じゃなくて、
一貫性を保つための妥協の是非について話をしたい。
> いつまでも馬鹿なこといってないでプロパティのある言語で10万行くらいコード書いてみろ。
プロパティのある言語なら、
値を取得する箇所にはプロパティ名(おそらく名詞)しか現れないので
こんな物議を醸すこともない。
0425デフォルトの名無しさん
NGNG0426デフォルトの名無しさん
NGNG0427デフォルトの名無しさん
NGNGyyy = object.size;
0428デフォルトの名無しさん
NGNGprivate int pr_hensuu;
int getHensuu(){return hensuu;}
int hensuu(){return getHensuu();}
}
両方使えれば解決、、、、 じゃねーよな
0429デフォルトの名無しさん
NGNGもーね。今日も嫌だと話したんだが、CとかJavaとかシェルに対して、
「 1 〜 8 0 桁 ま で に コ ー デ ィ ン グ す る 事 」
なんてな糞規約なんぞ設けるなって。いやマジで。
COBOLは言語仕様としてそう書かねばならない(フリー除く)から規約
にするまでもないのだが、CやJavaやシェルにまでそんな制限も設け
てたら、かえって読みにくいってば。
そのまんま書くとまずいんで、さらっと紹介するが、規約によって以下
を達成する事を目標としているそうな。この規約。
1:作成および保守の向上と信頼性
2:環境のリプレイスに耐えうる互換性
その割にはコンパイラに依存するような関数(ex.stricmp等)の利用を
禁ずるなどとは書いてない。
括弧は左右に1文字分のスペースを空けろと言うくせに、1行は80桁
までと規定する。そしてその弊害はネストにおよび、3ネスト以降は禁
止w
制御文の括弧中に関数呼び出しを書くなとさ。たとえば、
if ( atoi ( getenv ( TODAY_DATE ) ) == 20040819 ) {
hoge ( ... );
}
は駄目だとさ。
0430429
NGNGつまりだな。
if ( TodayDate == 20040819 ) {
/* DBから対象となるデータを読み込む */
hoge ( a , b , c , d , e , f , g , h );
}
は駄目で、
if ( TodayDate == 20040819 ) {
hoge ( a , b , c , d , e , f , g , h ); /* DBから対象となるデータを読み込む */
}
だとよ。こう書くと「変じゃねぇYO!」という香具師もいるかも知れないが、
コメントの開始位置が40桁目という事は、如何にコーディングする範囲
が狭いか分かるだろう。
0431429
NGNG説なんかで
if ( TodayDate == 20040819 ) {
hoge ( a , /* あれ */
b , /* これ */
c , /* それ */
d /* どれ */
);
}
もやっちゃいかんとかいう。大コメント(俺はよく関数内の区切りとして書く
のだが)ソレも駄目ー。
そういうよく分からない誰かの美的センスとしか受け取れない脇で、プレ
フィックスなんかには一切触れないw
禿しくウザーですよ。
オレモナー
0432デフォルトの名無しさん
NGNGこれは確かに萎えるが、
>if ( atoi ( getenv ( TODAY_DATE ) ) == 20040819 ) {
ありえねー。
0433デフォルトの名無しさん
NGNG萎え。そんなこと言われたら二度とコメント書かないね
inline void ReadTargetDataFromDatabase ( DatabaseName, TargetData, ReadOption, ... ) {
hoge ( DatabaseName, TargetData, ReadOption, ... )
}
みたいなバカなラッパ関数作っちゃうよ?
>要注意な引数の解説なんかで
that_data_to_treat_data = a;
this_data_from_object = b;
it_data = c;
what_data = d;
hoge ( that_data_to_treat_data , this_data_from_object, it_data, what_data )
とかやっちゃえば?
0434デフォルトの名無しさん
NGNG大抵その手のあふぉ規約には、ローカル変数の命名規約とかあったり
するんだよな。
1関数1ファイルだとか、関数名=ファイル名(8文字まで)だとか、
腐ったプロジェクトに放り込まれたら泣くしかない。。。
0435デフォルトの名無しさん
NGNGヘッダにinclude書くなですよ。
コメントはアホドキュメントツールがフロー書けるように、コメントの形式ガチガチですよ。
関数の数がナゼか最初から決まってるから、重複コードテンコ盛りですよ。
仕様書のデータ定義は、なぜかCOBOL用語バシバシですよ。
デバッグアサーションは1行毎に1個記述ですよ。
誰かCわかるマネージャ呼んで来いや!
…なんでこのPJにいるんだ、俺はorz
0436デフォルトの名無しさん
NGNGど,どーやってコード書けばいいのですか( ・ω・)モニュ?
漏れには想像がつきませんです・・・
0437デフォルトの名無しさん
NGNG別に愚痴を垂れるほど酷い規約とは思わないが…
ヘッダにincludeを書くのは、極力避けるべきだし。
(例外はプリコンパイルの効果を狙う時)
その他は激しく同情。
>436
例えば hoge.h の中に moge.h を書かなくても、
hoge.h を includeする時は、必ず先に moge.h を include するようにすれば良い。
0438デフォルトの名無しさん
NGNGコーディングは可能だが、断じて良くない。
0439デフォルトの名無しさん
NGNG本体に書くincludeは、本体で使用している関数等の必要に応じて書く。
勿論、2重読込み防止策は必ずやっておく。
極力書くなってのは、そういう事だ。
ヘッダに本体で使うincludeを延々と書いたり
本体にヘッダのinclude順序を気にしながら延々と書いたり
なんてアホ行為は、下衆以外の何者でもない。
基本の基本なハズなんだが…orz
ちなみに、C++だったらもっとキレイにモジュールを独立化できるやね。
0440デフォルトの名無しさん
NGNGっていうのと
> hoge.h を includeする時は、必ず先に moge.h を include するようにすれば良い。
っていうのとは天と地くらいの差があるけどね(そりゃいくらなんでもおおげさだ!)。
後者は単品じゃコンパイルが通らないインクルードファイルを量産することになるわけで。
> ヘッダにincludeを書くのは、極力避けるべきだし。
> (例外はプリコンパイルの効果を狙う時)
だけから両者の違いを読み取れっつーほうが無理だろうな。
0441デフォルトの名無しさん
NGNG0442デフォルトの名無しさん
NGNG「ヘッダ内で使用している構造体等の必要に応じて書く」と「プリコンパイルの効果を狙う」
も天と地ほどの…
0443デフォルトの名無しさん
NGNGまとめると、「『ヘッダでインクルードするな』はうんこ」と言うことでよろしいか?
0444デフォルトの名無しさん
NGNG>ヘッダに書くincludeは、ヘッダ内で使用している構造体等の必要に応じて書く。
(C++はともかく)Cでは余程のこと(極端に肥大化するとか)がない限り、
型定義と関数宣言の依存関係は1つのヘッダ内で収まると思うのだが。
C++は苦しいだろうが無理ではない。継承やinlineを避け、クラスメンバはポインタで持たせる等すれば
相互依存を避けられるし、そうすることのメリットもある。
(詳しくはEffectiveC++を見ると良い)
0445デフォルトの名無しさん
NGNG> (C++はともかく)Cでは余程のこと(極端に肥大化するとか)がない限り、
> 型定義と関数宣言の依存関係は1つのヘッダ内で収まると思うのだが。
たとえばさ、自分で作ったモジュールの中にFILE*を引数としてとる関数があ
るとそのモジュールのインターフェイス用のヘッダには"<stdio.h>"が必要に
なるでしょ。FILE*じゃなくても、time_t(time.h)とか、size_t(stddef.h)と
かも同様。もちろん自分で作ったデータ型を利用する場合は、そのモジュール
用のヘッダをインクルードすることになる。
ひとつのヘッダで収まるかどうか、というのは肥大化とかと関係ないんだよ。
0446デフォルトの名無しさん
NGNGどうでもいいけどtime_tやsize_tはともかく、FILE*はstruct FILE;の一行で済むだろ。
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNG例えば FILE* を受け取る関数を作ったとして、その関数を使うソースでは stdio.h もincludeする必要があるのは自明。
(stdio.hをincludeせずに、どうやってその関数に渡すファイルを開くの?)
この場合、暗黙にincludeしてしまう方が気持ち悪いと思うのだが…
0450デフォルトの名無しさん
NGNG「このヘッダをインクルードするときは必ず先にstdio.hをインクルードしてください」ってか?
includeの順番なんて気にしたくねぇだろ。
0451デフォルトの名無しさん
NGNG明示的にもう一度.c/.cc/.cppでincludeすればいいだけで。
でもまあ、
「単体でコンパイルできないヘッダがイヤ」つまり
「このヘッダをインクルードするときは先にstdio.hをインクルードする必要があるのがイヤ」
というだけの話なので、struct FILE;の先行宣言だけでちゃんと.h単体のコンパイルが通るなら
それはそれで別にいいと思うけど。
ま、この辺はレガシーなしがらみだよな。ヘッダが必要とかどうとかは。
事実Java/C#なんかはヘッダファイルという概念はないし、
こんなものはコンパイラがやるべき仕事だというのは確かだろうと思う。
0452デフォルトの名無しさん
NGNG> それはそれで別にいいと思うけど。
いや、ダメだろ。
0453デフォルトの名無しさん
NGNG通んないっしょ
0454デフォルトの名無しさん
NGNGstruct _iobuf {
char *_ptr;
int _cnt;
char *_base;
int _flag;
int _file;
int _charbuf;
int _bufsiz;
char *_tmpfname;
};
typedef struct _iobuf FILE;
ほら、これじゃstruct FILEとしても通らないっしょ
0455デフォルトの名無しさん
NGNGincludeの順番なんざ気にしたくない、という気持ちは分からんでもないが、
使いにくさとのトレードオフで手に入るメリットがあるのだよ。
>435のマネージャがそれを狙っているかは疑問だけど、あーいう風に愚痴るのはどうかと。
自分の勉強不足晒すようなモンだよ。
>454
ついでに標準Cライブラリのヘッダも見ておく事をお勧めする。
中でincludeしているヘッダはほとんど無いよ。
WinAPI とか C++のヘッダはincludeしまくりだけど…
あと記憶が定かじゃないが、準標準ライブラリでincludeの順番を指定してるのが
あった気もする。
0456デフォルトの名無しさん
NGNG>使いにくさとのトレードオフで手に入るメリットがあるのだよ。
さっさとメリットを言えよ。
>ついでに標準Cライブラリのヘッダも見ておく事をお勧めする。
>中でincludeしているヘッダはほとんど無いよ。
糞低能だな。
ほとんどない、だからなんだよボケ。
0457451
NGNGすまん。手元で確認したら確かにコンパイル通らなかった。
ためしもせずに言うものじゃないな。申し訳ない。
>>452
が、やっぱり「先行宣言だけでちゃんと.h単体のコンパイルが通るなら」
別に良いと思う。
いや、まあ、今回の場合はその仮定が成り立たなかったわけだが・・・
その点はすまんかった。
0458デフォルトの名無しさん
NGNG0459デフォルトの名無しさん
NGNG>メリット
・例えばあるヘッダに含まれる関数が不要になったため、関数と一緒にヘッダも削除した所、
今まで正常にコンパイルが通っていた場所でコンパイルエラーが多発するようになった。
…という経験は無いかい?
まぁ賢い皆さんなら何故エラーが起きたかすぐ分かるだろうが、
アフォPGはこれで何時間も悩んだりする。それを防止する。
・再コンパイル効率が上がる。(詳しい話はEffectiveC++とか見れ)
ただ>437で書いてるような、ソースに追い出す手法では上がらんけど。
・ソースが依存しているヘッダが一目で分かる。
ツール使えばいいだろ、というのはその通り。
>435のマネージャが狙ってそーなのはこの辺。
>だからなんなんだ
Cではヘッダ内includeがほとんど必要ないという証明。
0460デフォルトの名無しさん
NGNG> 例えばあるヘッダに含まれる関数が不要になったため、関数と一緒にヘッダも削除した所、
> 今まで正常にコンパイルが通っていた場所でコンパイルエラーが多発するようになった。
例えばあるヘッダに含まれる関数が必要になったため、ヘッダのインクルードを追加したところ、
そのヘッダ内部でコンパイルエラーが多発するようになった。
目くそ鼻くそだな。
> 再コンパイル効率が上がる。(詳しい話はEffectiveC++とか見れ)
構造体の前方宣言で済ませる手法を使わないと変わらない。
それ以外のFILE*やsize_tなんかでは、結局インクルードする必要がある。
> ソースが依存しているヘッダが一目で分かる。
> ツール使えばいいだろ、というのはその通り。
依存関係を調べたければツールを使う必要がある。
ソースを一目見て依存するヘッダを全部分かった気になるのはアフォとしか思えん。
> Cではヘッダ内includeがほとんど必要ないという証明。
そんなのは証明と言わない。ただの例。
0461デフォルトの名無しさん
NGNG> ついでに標準Cライブラリのヘッダも見ておく事をお勧めする。
> 中でincludeしているヘッダはほとんど無いよ。
どういう意味?gccだと
complex.h:#include <features.h>
err.h:#include <stdarg.h>
errno.h:#include <bits/errno.h>
malloc.h:#include <features.h>
math.h:#include <bits/huge_val.h>
math.h:#include <bits/mathcalls.h>
math.h:#include <bits/mathdef.h>
math.h:#include <features.h>
setjmp.h:#include <bits/setjmp.h>
setjmp.h:#include <bits/sigset.h>
setjmp.h:#include <features.h>
signal.h:#include <bits/signum.h>
signal.h:#include <bits/sigset.h>
signal.h:#include <bits/types.h>
signal.h:#include <features.h>
stdint.h:#include <bits/wchar.h>
stdint.h:#include <bits/wordsize.h>
stdint.h:#include <features.h>
stdio.h:#include <bits/stdio_lim.h>
stdio.h:#include <bits/sys_errlist.h>
stdio.h:#include <libio.h>
stdlib.h:#include <features.h>
stdlib.h:#include <stddef.h>
いくらでもあるけど。
0462デフォルトの名無しさん
NGNGこいつ,どのソース見ていってるんだ?
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGC(OBOL) だ
0467デフォルトの名無しさん
NGNGご教示よろしくお願いします。 >> マネージャさん
0468デフォルトの名無しさん
NGNG大塚製薬 オロナミン C++ を発表
http://www.horobi.com/jokes/oronamin-C++.html
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNGありがとうございます。これで今後ヘッダに #include 書かなくて
済みそうです。感謝です。
0471デフォルトの名無しさん
NGNG0472デフォルトの名無しさん
NGNG0473459
NGNG>460
>そのヘッダ内部でコンパイルエラーが多発するようになった。
それってインクルードガードかけて無いだけでは?
>構造体の前方宣言で済ませる手法を使わないと変わらない。
ちゃんと>459で>437みたいなやり方じゃ駄目って書いたじゃん。
きちんと書かなかったのは漏れのミスだけど。
>そんなのは証明と言わない。ただの例。
そいつはうっかりしてた。すまんかった。
>461,462
「C標準ライブラリ」以外のヘッダが混じってますよと。
ちなみに漏れが見たのは、>454へのレスである事を考慮すれば分かると思うがVC++。
他のはノーチェックだった。その点はすまんかった。
0474デフォルトの名無しさん
NGNG> 「C標準ライブラリ」以外のヘッダが混じってますよと。
それがどうかしたの?
標準ライブラリのヘッダ内でインクルードしてるのは沢山あるわけで、
「中でincludeしているヘッダはほとんど無いよ」ってのが嘘であることに変わりはない。
0475デフォルトの名無しさん
NGNG文脈からinclude足りてないってぐらいは読めって、つっこまれるぞ。
0476デフォルトの名無しさん
NGNG混乱してきたんではっきりさせてくれ。
まず、ヘッダA内で使用しているものの宣言を含むヘッダBがある場合、
1.ヘッダA内でヘッダBをインクルードする
2.ヘッダAを使うソース側でヘッダBを先にインクルードさせる
というふたつの選択肢があるとして、2をコーディング規約にされた>>435がキレている、と。
>>450の「includeの順番なんて気にしたくねぇだろ」に対して、
>>455で「使いにくさとのトレードオフで手に入るメリットがある」と言って、
提示したメリットが>>459なんだから、
>>459は上のふたつのうち、2を選んだ場合のメリットなんだよな?
0477デフォルトの名無しさん
NGNGつまり
includeの順番に気をつけさせることで手に入るメリットなんか無かった
ってことでいいのか?
そこをはっきり言ってくれ。
まだメリットがあると主張するなら、>>459を反省して
隙の無いレスでまとめてもらえるとありがたい。
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG( ・∀・) ワクワク
oノ∧つ⊂)
( ( ・∀・) ドキドキ
∪( ∪ ∪
と__)__)
0480デフォルトの名無しさん
NGNG0481459
NGNGんじゃ次は…手抜きでコレ。
ttp://lagendra.s.kanazawa-u.ac.jp/ogurisu/manuals/c/C-faq/C-faq-10.html#10.7
0482デフォルトの名無しさん
NGNGどう読んでみても,
>入れ子の#includeは止めたほうがいい
としか書いていないが。しかも,#includeをヘッダに書かないメリットなんか書いていない。
>ヘッダファイルをモジュールを組み上げるように使うことができる
>(使い手はいちいち#includeしてまわらなくてすむ。)
>grep(やタグファイルのようなツール)があれば、定義がどこにあるのか見つけるのを楽になる。
と,メリットしか書いていないが。
0483デフォルトの名無しさん
NGNG>有名なトリック
>#ifndef HEADER_FILE_NAME
>#define HEADER_FILE_NAME
>…ヘッダファイルの中身…
>#endif
>
>こうすれば何回#includeしても問題ない。
と,普段使っている方法を使えば問題ないとしか書かれていない。
メリットばかりじゃん。
0484デフォルトの名無しさん
NGNGあんた日本語読めないのか?
0485デフォルトの名無しさん
NGNG0486デフォルトの名無しさん
NGNG>> 今まで正常にコンパイルが通っていた場所でコンパイルエラーが多発するようになった。
> 例えばあるヘッダに含まれる関数が必要になったため、ヘッダのインクルードを追加したところ、
> そのヘッダ内部でコンパイルエラーが多発するようになった。
> 目くそ鼻くそだな。
目くそ鼻くそどころか悪化してると思うぞ。
見つからないヘッダを「このファイルが見つからないから開けない」って指摘してくれるツールは知ってるが、
へッダに手を加えず「お前はこのヘッダを include していない」って教えてくれるツールは見たこと無いぞ。
0487デフォルトの名無しさん
NGNGどっちの場合でも「このファイルが見つからないから開けない」とはならないだろ。
0488デフォルトの名無しさん
NGNG後者はならない
0489デフォルトの名無しさん
NGNGそもそも
> 例えばあるヘッダに含まれる関数が不要になったため、関数と一緒にヘッダも削除した所、
> 今まで正常にコンパイルが通っていた場所でコンパイルエラーが多発するようになった。
ってのがまず起きないな。
0490デフォルトの名無しさん
NGNGいや、起きるだろ。
0491459
NGNG(入れ子にすると)makefileの保守が面倒になるって所とか。
逆に入れ子にしない事で、makefileの保守が容易になるという意味である事はわかるね?
分かりやすく例えると、grep一発で任意のヘッダに依存しているファイルの一覧を作成できるって事。
…もしかして「grepでできる」のメリットが理解できないとか?
0492デフォルトの名無しさん
NGNG> 分かりやすく例えると、grep一発で任意のヘッダに依存しているファイルの一覧を作成できるって事。
おい、Makefileの保守といきなり関係なくなってるぞ。
Makefileの保守にはもちろん gcc -M や makedepend などを使うわけで、ヘッダの入れ子は関係ないな。
しかし「grep一発で任意のヘッダに依存しているファイルの一覧を作成できる」というのは、
今までの中では一番「メリット」と言えるかも知れない。
ただ、その一覧が欲しくなること自体があまりなさそうなので
「grepでできる」のメリットが薄まってしまっていると思う。
総じて、「使いにくさとのトレードオフで手に入るメリット」としては受け入れ難い。
0493デフォルトの名無しさん
NGNG> (入れ子にすると)makefileの保守が面倒になるって所とか。
オイオイ、「とか」って言ってるが、これまでさんざん要求されてるにもかかわらず
いまだに他に何も利点が挙げられてないってわかってんのかよ。
そもそも手書きで「makefileの保守」なんて言ってること自体どうしようもないけど。
> 逆に入れ子にしない事で、makefileの保守が容易になるという意味である事はわかるね?
ちっちゃいmakefileを手で書いてる場合だけだね、「保守が容易になる」のは。
> 分かりやすく例えると、grep一発で
そんなのたとえになってないって。
どうも459はCがわからないだけじゃなく日本語も不自由なようだな。
0494459
NGNG>Makefileの保守といきなり関係なくなってるぞ。
はい、間違えました。grep云々は、修正の影響範囲を調べる手法。
makefileの保守ならsedやawkでincludeを抜き出して、依存関係を生成、が例としては適切ですかね。
またご指摘の通り(>481でも示唆されてるが)今はより良いツールがあるんで、
散々言われてる通り大したメリットは無いのも認めます。
>493
>そもそも手書きで「makefileの保守」なんて言ってること自体どうしようもないけど。
ごめん、最近物忘れが酷いんだ。
どこで言ってたか教えてクレ。
0495デフォルトの名無しさん
NGNG0496デフォルトの名無しさん
NGNG「includeの入れ子を避ける」と、例えばヘッダAを修正した結果、ヘッダBが必要になったら、
Aを使ってる全てのソースを修正しなきゃならんのだぞ?
少し考えりゃ、百害あって一利無しだと分かるだろ。
0497デフォルトの名無しさん
NGNG標準ヘッダを入れ子にしていたのだけど
再利用で、別の処理系で使ったところ
こちらの標準ヘッダでは一部のルーチンがライブラリになく
ユーザが作成することになっていたため
入れ子をやめるか、ダミーの関数を作成するか
の判断に迫られたことがあったように思います。
それ以来、入れ子はやめて、ヘッダのファイルヘッダにコメントで
「事前に、〜を使用するため〜のヘッダをincludeするように」などと
使用条件を書くようにしました。
0498デフォルトの名無しさん
NGNGだって見やすいんだもん。。。。
0499デフォルトの名無しさん
NGNG> こちらの標準ヘッダでは一部のルーチンがライブラリになく
> ユーザが作成することになっていたため
その処理系がヘボなだけ。
0500デフォルトの名無しさん
NGNG> ユーザが作成することになっていたため
> 入れ子をやめるか、ダミーの関数を作成するか
どっちにしろ使ってる関数なら作る必要があるんでね?
宣言してるだけで使ってない関数ならダミーの関数すらいらない。
0501デフォルトの名無しさん
NGNGインクルードガードとか言うテクニックが広がる分けない。
0502デフォルトの名無しさん
NGNG??
あと、ここで議論されていたのは、「ヘッダでは絶対includeしてはいけない」は有効か、なんだけど?
0503502
NGNG…マダアタマガネテルヨorz
0504デフォルトの名無しさん
NGNGそういうレスは想像してたけど
ヘボなのはわかってるけど、元受の指定なので。
ヘボだろうとなんだろうとどうしようもない。
やらざるを得ないので。
>>500
そういやそうだ。あれ、なんでだったけな。。orz
0505デフォルトの名無しさん
NGNG> やらざるを得ないので。
愚痴はよそで垂れて。
0506デフォルトの名無しさん
NGNG「ヘッダの入れ子include禁止、というコーディング規約は糞」
で、もう異論はないかね?
0507デフォルトの名無しさん
NGNG「ヘッダの入れ子include禁止」だもんなあ。
糞規約だな。
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG0510デフォルトの名無しさん
NGNG0511デフォルトの名無しさん
NGNGポインタ禁止は(C言語だと)流石に仕事にならんだろう…
でもprivate禁止は以前ネタで挙がってた気が。
0512デフォルトの名無しさん
NGNG0513デフォルトの名無しさん
NGNGC++だと、ポインタ禁止にするとアホが駆逐されるからやりやすいよ。
0514デフォルトの名無しさん
NGNGそれはそうかもしれんが、正直あんまりやりたくはないな。
自分の手足(=ポインタ)が縛られてでも馬鹿に邪魔されないことがどれだけ重要かにかかってるな。
手足縛られるよりも酷いことになる馬鹿が居るんだとすると禁止でもいいかもしらん。
ところで参照は使ってもいいですか?
ただ、一部プラットフォームはそのAPI呼び出しにポインタ必須だからなぁ。
WindowsとかWindowsとかWindowsとか。例外処置?
0515デフォルトの名無しさん
NGNGお前はWindowsしか知らんくせに、Windowsバカにしたい年頃なだけだろがボケ
0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG周りの所為で自分に悲劇が降って来た嘆きながら
その実自分が回りに悲劇を振りまいた張本人だったというパターンだな
0518デフォルトの名無しさん
NGNGC系のインターフェイス呼び出しにはどう頑張ってもポインタが付きまとうし。
そういう意味ではポインタ禁止はかなり厳しいのは確かだろうな。
0519511
NGNG某診断室みたいなサイトにサンプル転がってないかな。
0520デフォルトの名無しさん
NGNGもう診断室はいいよぉ。いまさらだよぉ。
0521デフォルトの名無しさん
NGNG関数のコールバックも使えないから、UIからの入力も受け取れない。
かといってコンソールからの入力もFILE*が必要だから出来ない。
何も出来なくない?
0522デフォルトの名無しさん
NGNGだから、C++だってば。
(もちろん完全に排除ってのは難しいと思うけど。)
0523デフォルトの名無しさん
NGNGポインタ使わずに、レジスタとか絶対アドレスをたたけるんですか?
0524デフォルトの名無しさん
NGNGC++にはポインタ演算のできないポインタのような参照がある。
ただ絶対アドレスは叩くのはたぶん無理。
0526デフォルトの名無しさん
NGNGそりゃそうだ。
けどあえてむちゃくちゃを言わせてもらおう。
アドレスにマップされているレジスタとか絶対アドレスだったら、
アドレスをリテラルで用意しておけばポインタを使うことにはならないよね?(w
(ポインタへのキャストは必要だけど)
0527デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
NGNGどういう住み分けが一番いいのかな?
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGそれらの区別は基本的にconstの役目。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
NGNG0533デフォルトの名無しさん
NGNG設計思想に無い意味を与えるのはよくない。しかも代替がある。
その住み分けがよいとは思えない。
0534デフォルトの名無しさん
NGNGと書いてある本があるけど、端的な話?
それともほんとにそれが理想?
0535デフォルトの名無しさん
NGNGポインタはオブジェクトを単に指し示すだけでなく、
配列演算やヌルポインタなどの意味ももれなく併せ持ってしまう。
参照であれば、単一のオブジェクトを指し示すだけの意味に絞れる。
意味が絞れれば、コードから意図を汲み取りやすい。
0536デフォルトの名無しさん
NGNGこのスレ結構勉強になるんで、前スレも欲しいんだけど
誰かうpしてくれませんか?専ブラの生データでもいいんで
0537デフォルトの名無しさん
NGNGint &func(){
int *ip=NULL;
return *ip;
}
参照型でヌルポインタが出てきたときの解りづらさときたら(ry
0538デフォルトの名無しさん
NGNG∧_∧
( ´∀`)ぬるり
0539デフォルトの名無しさん
NGNGまあこんなのは悪意があるか、よほどのうっかりさんでもない限り作られないからな。
0540デフォルトの名無しさん
NGNG以前、失敗したらNULLを返す関数の戻りが返される参照型の関数があって
外側で
int &hoge=func();
if(&hoge==NULL){
…
}
って書く羽目になった orz
0541デフォルトの名無しさん
NGNGオレもいい加減止めようかな。あんまり意味ないっぽいし。
制限すると今度は改行したあと、どこまでインデントするかで悩むんだよね。
メソッド呼び出しの引数が分割されたとき、
Method()の(で合わせるか、普通にインデントするだけにするか、とか。
0542デフォルトの名無しさん
NGNG> 1行80文字制限は無視してるヤツが多いのか。
オレはその制限で縛ってるよ。オマケに1インデント8文字分だし。
長過ぎる名前や、ネスト深くなり過ぎるとすぐに気づく。
引数の分割は普通にインデントしてる。
0543デフォルトの名無しさん
NGNGインデントは4スペース、横は120くらいかなぁ。
インデント8で80制限だと、Javaなんかメソッド内部の時点で残り64文字。
forのなかにifでも入れようもんなら残り48文字なわけで、さすがにちょっと窮屈かなと…
関数呼び出しでの折り返しは
font = CreateFont(-11, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH | FF_SWISS, "Arial");
か、
font = CreateFont(
-11, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH | FF_SWISS, "Arial"
);
だな。
0544デフォルトの名無しさん
NGNG0545541
NGNGインデント8文字は辛そう。
>>543
プロポーショナルフォントで綺麗に揃うか分からないけど、
font = CreateFont(-11, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,
FIXED_PITCH | FF_SWISS, "Arial");
このパターンはダメかな。
これに統一すると、関数内でさらに関数呼び出すと右に偏っちゃうのが難点なんだよね。
あらかじめ変数に入れといておけば良いんだけど、無駄に名前使いたくないし。
単純な値でもちょっと悩む。
addTest = 1 + 2 + 3 + 4 + 5 +6 + 7 + 8 + 9
+10;
addTest = 1 + 2 + 3 + 4 + 5 +6 + 7 + 8 + 9
+ 10;
addTest = 1 + 2 + 3 + 4 + 5 +6 + 7 + 8 + 9
+ 10;
0546デフォルトの名無しさん
NGNGそのCreateFontの例、俺もやってたことあるけど、
関数名を置換したときにインデントまでいじる必要が
出てくるのが面倒だった。
今は>>543の後者にしてる。
0547デフォルトの名無しさん
NGNGたしかにインデントし直すのはめんどいな。
0548デフォルトの名無しさん
NGNG「秀丸のタブ設定変えるだけでいいよ」と言う。
でも正直4000円払っているか否かは多いに疑問…
0549デフォルトの名無しさん
NGNGWindowsの関数名ってやたらに長いし
0550デフォルトの名無しさん
NGNG(インデントにタブ使用禁止してスペース数を設定くらい)
普段は何も考えずにインデントされていくし、
[Tab]キーを押せば自動整形されるから超楽チン。
もう秀丸なんて使えないね。
xyzzy まんせー!!
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG0553デフォルトの名無しさん
NGNGうちの大学の教授が、実習にて
「プログラムのコメントは一行ごとに書くこと。
自分の書くプログラムすべてにコメントを入れるのはプロなら常識」
「会社では、構造体のメンバを一個追加するためにも上司の書類が必要」
とのことですが、プロの皆さんとしてこれはどうなんでしょうか?
プログラムの可読性を重視するという点についてはまったく異存はありませんが、
「コメントが少ない」と言う理由でレポートを突っ返された日には……
0554デフォルトの名無しさん
NGNG有名オプソコードでも提出してやれ。
0555デフォルトの名無しさん
NGNGまともに書いてあるコードならそれだけで何やってるか分かるはずだし。
必要なのは「なぜこの方法にするか」とかコードから読み取れない
メタ情報じゃないのか?
むしろ、無駄なコメントはかえって可読性を落とすよ。
コメントがあるとついついそっちで理解しようとしちゃうから、
コードだけ修正してコメント直し忘れたりすると、
バグが混じったとき永遠に気が付かなかったりするし。
0556デフォルトの名無しさん
NGNGinstance = new Something();
みれば分かるよ・・・・・・('A`;)
0557デフォルトの名無しさん
NGNGもっともCでいうところの構造体のメンバに関しては簡単に増減できないと思う。
C++でいうところのメンバ変数がすべてpublicのclassなわけだから、
その構造体使ってるところ全部コード見直す必要が出てくる。
書類どうこうはまぁともかくとしても、勝手に弄って欲しくはないかな。
増やすくらいならどってことない気もするか…?
0558デフォルトの名無しさん
NGNG構造体でもファイルにそのまま保存したりとかあったりすると勝手な追加はやめて欲しい
0559デフォルトの名無しさん
NGNG大きく間違ってはいないと思う
要するに、行き当たりばったりで作るなということ
コメントも、書けないのと書かないのでは違う
コメントを入れたからといって効率おちるものではないし
学生のうちは書いておいて損ではない
0560デフォルトの名無しさん
NGNGまあ、必要なコメントと不要なコメントの区別がつくようになるまでは
なんでもかんでもコメント入れるのは(訓練として)悪いことじゃないかもしれん。
ここで愚痴ってるってことは多分そのくらいのことは分かる自信があるくらいには
やれると思ってるってことなんだろうと思うが、大抵先生ってのは頭固いのが多いから折れとけ。
どうせ会社入ったって頭の固い上司ってのは居るもんだし、
そういう意味でも悪いことじゃないかもしれん。
0561デフォルトの名無しさん
NGNG上司(ここでは教授)の顔を立てておくのは世渡術として身に着けておくと良いかも知らん。
それとも、「そこは間違ってる」と教授に対して主張できるのは学生の特権かねぇ?
0562デフォルトの名無しさん
NGNGいまどきそんなアフォが居るとは・・・
0563デフォルトの名無しさん
NGNGろくに書けないうちに中途半端な技術で、出来ると気になってこの業界に来られても困る
>>553 が反抗したいだけなのか、まんどくさいのを正当化したいだけなのか
いずれにせよ、言う事聞いとけ。間違っちゃいない。
0564デフォルトの名無しさん
NGNGアフォだな。
0565デフォルトの名無しさん
NGNG,、 '";ィ'
________ /::::::/l:l
─- 、::::;;;;;;;;;`゙゙''‐ 、 __,,,,......,,,,_/:::::::::/: !|
. : : : : : : `゙'ヽ、:::゙ヾ´::::::::::::::::::::::`゙゙゙'''‐'、. l|
、、 . : : : : : : : : r'":::::::::::::::::::::::::,r':ぃ::::ヽ::::::::ヽ! ,、- 、
.ヽ:゙ヽ; : : : : : :ノ:::::::::::::::::::::;;、-、、゙::: rー-:'、 / }¬、
. \::゙、: : : :./::::::::::::::;、-''":::::::::: ,...,:::,::., :::':、 _,,/,, ,、.,/ }
ヽ:ヽ、 /::::::::::::::::::::::::: _ `゙''‐''" __,,',,,,___ /~ ヾ::::ツ,、-/
`ヽ、:::::::::;;;、、--‐‐'''''',,iニ- _| 、-l、,},,  ̄""'''¬-, ' ''‐-、 .,ノ'゙,i';;;;ツ
_,,,、-‐l'''"´:::::::' ,、-'" ,.X,_,,、-v'"''゙''yr-ヽ / ゙゙'ヽ、, ,.' j゙,,, ´ >>564またまた〜ご冗談を
,、-''" .l:::::::::::;、-''" ,.-' ゙、""ヾ'r-;;:l 冫、 ヽ、 / __,,.ノ:::::ヽ. /
l;、-'゙: ,/ ゞ=‐'"~゙゙') ./. \ / '''"/::::;:::;r-''‐ヽ
,、‐゙ ヽ:::::..,.r'゙ ,,. ,r/ ./ ヽ. ,' '、ノ''" ノ
,、‐'゙ ン;"::::::. "´ '゙ ´ / ゙、 ,' /
' //::::::::: {. V /
/ ./::::::::::::: ', / /
. / /:::::::::::::::::. ',. / ,.、 /
0566553
NGNGそれに必修授業の担当教官にケンカ売ったって仕方ないし……
だがな、お前ら自分の書いたプログラムの一行ごとにコメント入れたいか?
無駄なコメントを入れるのは嫌だやりたくない……重要なのは可読性であってコメントじゃないはずなのに……
こういう非生産的な作業は本当に気が滅入る……
0567デフォルトの名無しさん
NGNGなんで高級言語が出来たと思ってるんだ?(プゲラ
0568デフォルトの名無しさん
NGNG完全におまえは正しい。
ただし本当のプロなら、非生産的でも、理不尽でも、クライアントの要求は実現するものだ。
0569デフォルトの名無しさん
NGNG個人的には不満も出るだろうが、
生徒全体に教えるという意味では、最初はそういうもんでいいんでない?
生産的どうのこうの言ってたら何も出来んよ
まぁ漏れは>>568の意見に賛成だな
0570デフォルトの名無しさん
NGNG兼ねないだろ。
意味の無いコメント増えたら見づらいし、
意味があるとしてもコンパイラにチェックされない分、保守性も著しく下がる。
0571デフォルトの名無しさん
NGNGコメントを非常識に多く書かされてりゃ、コメント書く癖は付く
その上で、どのぐらいが適度・適切なコメントなのか判断が付くようになる
↑にも書いたが、最初はそういうもんでいいんでない? と。
見づらい、保守性下がる、などは言うまでもないこと
ただ、教育というものを考えればそういうのもアリだと思うが
0572デフォルトの名無しさん
NGNG根拠は?
0573デフォルトの名無しさん
NGNG高級言語ではソースそのものが処理を説明していないとな。
0574デフォルトの名無しさん
NGNG禿同
まだ、なにが必要でなにが必要でないか判断もつかないのに生意気言うなというところ
とにかく書けよ、書けばわかるさ
反論してる奴は、たぶん(ry
0575デフォルトの名無しさん
NGNG根拠は?
0576デフォルトの名無しさん
NGNG>自分の書くプログラムすべてにコメントを入れるのはプロなら常識」
だの
>「会社では、構造体のメンバを一個追加するためにも上司の書類が必要」
だのは素人の妄言にしか聞こえない。
0577デフォルトの名無しさん
NGNG>「会社では、構造体のメンバを一個追加するためにも上司の書類が必要」
これはあるが。
0578デフォルトの名無しさん
NGNG真性なのか、どちらかだろうな
0579553
NGNGなんか腑に落ちた。
彼には皮肉のひとつやふたつ言ってやりたいけど、そんなことせずに
淡々と糞レポートを仕上げるべきなんだよな。
とは言えやっぱりやりたくない……
こんなことで時間を浪費するくらいならもっと生産的なこと(わいせつ画像収集等)をしていたほうがましだ……うう
0580デフォルトの名無しさん
NGNGあとで自分で見てパニクってたな
結局やめていって残された奴がひどいめにあったが
そうかと思えば、若い奴で やっとコメント書いたかと思ったら
i=100; // i に100を代入する
みたいなコメント書きやがって(ry
おっと、ここは愚痴を書くスレじゃなかった
0581デフォルトの名無しさん
NGNGまー教授も学生が理解できてるか採点しなきゃいかんから
そんなこと言ってるんだと思っておくのが一番いいんじゃないか。
0582デフォルトの名無しさん
NGNG0583デフォルトの名無しさん
NGNG0584デフォルトの名無しさん
NGNG0585デフォルトの名無しさん
NGNGソースに見たまんまのコメントを追加するプログラムを作るんだよ
i=100; // i に100を代入する
とかのレベルなら可能だ
0586デフォルトの名無しさん
NGNG誰か作ってJOKEソフトとして(コメント入りのソース付きで)公開してくれ。
0587デフォルトの名無しさん
NGNGはじめにひとつ作っておけば後々の課題すべてに対応可能だな。
0588デフォルトの名無しさん
NGNGその教授は授業でサンプルコード書いたりしないのか?
サンプルコードに1行毎のコメントが書いてなかったら、プロじゃないのかと小一時間問い詰めてやれ。
0589デフォルトの名無しさん
NGNG0590デフォルトの名無しさん
NGNG0591デフォルトの名無しさん
NGNG0592デフォルトの名無しさん
NGNG0593588
NGNGそう返されたら
「プロでもないのに知ったかぶってるんじゃね-YO!」
でトドメ。
0594デフォルトの名無しさん
NGNGまぁ、必修じゃなければそれでもいいが。
俺も先生が気に入らなくて切った選択講義がひとつだけあるな。
プログラミング関係というかソフトウェア開発関係の講義だったかな…
0595デフォルトの名無しさん
NGNG0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNGマッキントッシュをマッキンと呼ぶのが普通。
マクドナルドがマックなら
マッキントッシュもマックで良いが。
0598デフォルトの名無しさん
NGNGマクドナルドはマクド
マッキントッシュはマックだ
0599デフォルトの名無しさん
NGNG関西人が幾らあほな事を喚いたところで、マクドナルド自身がマックと呼んでいる事実は覆らない。
0600デフォルトの名無しさん
NGNGつーか略し方はお上が定めたものをそのまま受け入れるよりも
顧客側が呼びやすいものを選ぶものだろ?
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNGマッキントッシュはMacやからマックって言うんや!
何か文句あるんか!?
0603デフォルトの名無しさん
NGNG0604デフォルトの名無しさん
NGNGマクドはマック、マックはマックだ
0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG名称の頭を取るのが関西方式という訳やないねん。
マクドは結果的に頭だけ取った言い方やけど、そこから法則を決めつけるのは頭悪すぎやねん。
とりあえず貴様らを同化する。
0607デフォルトの名無しさん
NGNG普段使ってるリズムだから使い易いわな
さわりは弱く、語尾を強くというイントネーションに合わせたらマクドになると
でもマックはマックだ。
0608デフォルトの名無しさん
NGNGエムアロク
0609デフォルトの名無しさん
NGNGマクドフライ
てりやきマクド
ビッグマクド
0610デフォルトの名無しさん
NGNGcallocはシーアロク?
そうそう、こないだ「すてゅっどいん、すてゅっどいん」ってコードレビュー中に連呼する人がいて、
何のことかと思ったらstdinのことだったみたい。
「とぅくぴっぷ」思い出しちゃって、笑いこらえるの大変だった。
0611デフォルトの名無しさん
NGNGどこが「コーディング規約」よ?
0612595
NGNG0613429
NGNG普通に書いていれば、そのくらいの割合。
Cだろうが、COBOLだろうが。大体においてそのくらいになる。
これが多いかどうかはさておくとしても、コメント書かない人って
マジで1割みたいないって時が多いように思う。
みんなのコードはどうよ?
0614デフォルトの名無しさん
NGNG0615デフォルトの名無しさん
NGNG0616デフォルトの名無しさん
NGNG> 変数名の長さは、プログラムの中の10 行以内で独立に使うものを、 1 文字 (i,j,...),
> 20 行以内で独立に使うものを 2 文字 (i1, i2, etc) プログラム全体に渡って使うが非常に
> 頻繁に使うものを 3 文字, common 変数は 6 文字、というように文字の長さがその性質を示すように設定する。
……どうなのかと。
0617デフォルトの名無しさん
NGNGそういうルールならそう書くだけです。
0618デフォルトの名無しさん
NGNG0619デフォルトの名無しさん
NGNG言語の不備をコメントで補うのは本末転倒。
0620デフォルトの名無しさん
NGNG三ヶ月後の自分が、自分のままであり続けるかどうかも保証されていない。
0621デフォルトの名無しさん
NGNG0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNG・ローカル変数は極力短く。
略語を使い、プレフィクスはなるべく付けない。(ポインタを表すp程度に留める)
・メンバ変数はなるべく意味を詳細に。
略語は使わず、型プレフィクスもメンテに支障が出ない程度に使用する。(※)
・グローバル変数には上記に加えg_を付ける
※ハンガリアンの弊害として知られる「型変更時の名前の変更」を避けるため、
暗黙の型変換が可能なものには、なるべく個別のプレフィクスを付けない。
例えば int、float、double 等は「n (number)」でまとめてしまうとか。
こんなんで良いのだろうか。批判よろ。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNGあっしは型とかスコープじゃなくて、ポインタとか宣言とかの形態で
プレフィックスを付けとります。
ポインタ: p_somethingとかauto_ptr at_somethingとか。
オブジェクト、ポインタ、型(宣言)は、結局同じものの別の側面を
表しているだけのような気がしますな。
0626デフォルトの名無しさん
NGNG0627デフォルトの名無しさん
NGNGauto_ptrや他のスマートポインタはポインタのセマンティックスで
動作することを念頭に置いているわけだし、たとえばスマートポインタの
場合、仕様変更やリファクタリングの結果、他のスマートポインタに
変更する可能性も十分あることから、at_somethingなどという
プレフィックスよりはp_somethingの方が優れているのでは、
とは思うな。まあ、俺はポインタでもプレフィックスは付けないけど。
0628デフォルトの名無しさん
NGNGどっちにしても型を反映するプリフィックスは総じて嫌だが。
0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNGサフィックスの方が良いような気がする。
0631デフォルトの名無しさん
NGNGたまにポインタの p をつけるぐらいだ。
0632デフォルトの名無しさん
NGNG0633625
NGNGshared_ptr weak_ptr 生ポインタあたりを混在させることが多いからね
それぞれに名前考えるのも面倒だし
>仕様変更やリファクタリングの結果、
>他のスマートポインタに変更する可能性も十分あることから
確かにshared_ptr <-> auto_ptr あたりはありそうだけど、
リファクタリングして名前変更すれば良いんじゃない?
0634デフォルトの名無しさん
NGNGそれが嫌だってんだよクソッタレが。
0635625
NGNGでも、smart pointerの種類を変更すると所有権の扱いが変わるから、
何も変更せずに済むとも思えんけど。
0636デフォルトの名無しさん
NGNGそれは「所有権の扱いが変わった」ことを反映した変更だ。
型が変わったから名前を変えるんじゃない。
0637デフォルトの名無しさん
NGNGグローバル変数は
m_
をつける事ってあるのだが、
クラスモジュール内の変数はどう名前つければいいんだろうか・・・
標準的なm_だと被るし
0638デフォルトの名無しさん
NGNGint int_i, int_j;
型変わったらリファクタリングブラウザで一括変換。そんだけ。
0639デフォルトの名無しさん
NGNGFValue;
なんてclass fieldのfをつける流儀もある(Borland Delphi)。
0640625
NGNG>それは「所有権の扱いが変わった」ことを反映した変更だ。
もちろん、名前が「所有権の扱い」のはっきりわかるものだったら
問題ないけど……
smart pointerを扱う上で、所有権がどのような状況なのかを
知るのは非常に重要なことだと思いますです。
#local scope内の話なら別にどうでもいいけどね。
0641デフォルトの名無しさん
NGNG所有権の扱いが重要な場所でそれを名前に表すのは問題ない。
その方法として型名を名前に付けるのは安直で脆い。
0642625
NGNG重要じゃない場所はそんなにないと思うけどね。
まあ、全部shared_ptrにしちまえば問題ないか。
#効率はともかく
0643627
NGNGそれも一理あるね。
でもま、俺は型によるプレフィックスは総じて不必要だと
思ってる。識別子というのは名前のとおり抽象された
各オブジェクトを識別するためにあるのであって、言語
レベルの制約によってその識別子の命名法が左右されるのは
抽象化の意味がないと思う。そんなのは宣言している箇所を
確認すればいい話であって。
データメンバの場合はgetter、setterなどのメンバ関数と
名前がかぶりやすいのでなんらかのプレフィックスなり
サフィックスを付けるのはしかたないとは思うけどね。
0644デフォルトの名無しさん
NGNG型名を名前に反映させるなんて、まったくナンセンスなんだよ。
template<typename Pointer> void do_something(Pointer p);
こんな形になってたら、その考え方でどうやって名前を付けるのかね?
0645625
NGNG>各オブジェクトを識別するためにあるのであって、言語
>レベルの制約によってその識別子の命名法が左右されるのは
>抽象化の意味がないと思う。
ごめん、C++前提で話してた。
確かに上の例はC++の不恰好さを取り繕うためのルールだからね。
#同じオブジェクトでも、型(class)/インスタンス/参照/ポインタ/smart_ptr
#のように何通りもの側面があって、それぞれを使い分ける必要がある
>そんなのは宣言している箇所を確認すればいい話であって。
確かにそうだけど、smart pointerは取り扱いを間違えると
ひどい目にあうからね。
まあ、これは私がタコだと公言しているようなもんだけど……
0646625
NGNGいや、関数は使い分ける必要無い(別の側面が無い)から
そのまま命名してもいいんじゃない?
所有権の微妙な問題も無いし。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG>>644は、仮引数のpのことを言ってるんだと思われ
まあ、所有権が明らかでないポインタを渡すのは
好ましくないとか言いそうだな、君は。
0649625
NGNGスマン、テンプレート引数のことか。
使い分ける必要無い(所有権を気にしなくていい)としたら何でもいいし、
特定のpointerに限られるとしたらそのpointerを示す名前にしたら
いいんじゃない?
……shared_ptr & 生ポインタのみつうのはどうしようかね?
0650デフォルトの名無しさん
NGNGそろそろその傷の痛みを忘れる時期じゃないかね。
0651625
NGNGこれもテンプレート引数と同様に、何を想定しているかによって
変えますな。
0652デフォルトの名無しさん
NGNGtemplateでPointer受け取るようにしといて、
「おれは生ポインタを想定している」という理由で p〜 にするのか?
templateの意味無いじゃん。ほんとでちゃんと考えてしゃべってる?
0653625
NGNGなんで?
0654デフォルトの名無しさん
NGNG0655デフォルトの名無しさん
NGNG特定の型を想定しているなら、型をtemplate引数にする意味が無いだろ。
templateを知らないんならともかく、こんなこと説明しないとわからないの?
嫌な言い方になるが、自論に反する情報はわざと目を背けてるように見えるな。
0656625
NGNG別にsmart pointerの種類を特定しても、templateのメリットが無くなるわけじゃ
ないと思うけど……自由度は減るけどね。
確かにスレ違いだな……
0657デフォルトの名無しさん
NGNGエディタと連携させるアルゴリズムが単純で面白い
0658625
NGNGスレ違いだけど自己フォロー。
smart pointerの種類を限定している例として有名なのにSTLコンテナが
あるよ(悪名高いCOAPのこと)
また逆に引数に指定されたオブジェクトの所有権を譲り受ける場合は、
auto_ptrで明示した方がいいわけで……
smart pointerの種類を特定することが悪いわけじゃないですな。
0659デフォルトの名無しさん
NGNGおぉ。言葉の意味は良くわからんが、とにかくすげー必死だな。
えーと、STLコンテナがsmart pointerの種類を限定しているって?
意味がわからないし、聞いたことも無いな。
会話がしたいのなら、エスパー以外にもわかるように説明してね。
0660625
NGNG毒吐くだけなら自己フォローに反応することないのに……
auto_ptr使うな、つうことですな。生ポインタやboost::shared_ptrはOK。
オブジェクトの所有権を譲り受ける場合の例はこんな感じ?
template<class T>
class holder {
public:
void setValue( std::auto_ptr<T> t )
{ h = t; };
private:
std::auto_ptr<T> h;
}
あと、>655 なんだけど、もしかして普通のポインタとvoid*を混同してない?
void f(int*) に double*突っ込めるなんて考えてないよね?
0661デフォルトの名無しさん
NGNG俺は625じゃないが、言いたいことはわかるけど、STLコンテナには
auto_ptrを入れてはいけないというのは規格で定められているよ。
COAP(Container of the auto pointer)は駄目って。
0662デフォルトの名無しさん
NGNGSTLコンテナに auto_ptr を入れることができないのは、
要素の型に Assignable Concept が要求されていて
auto_ptr はその要求を満たさないから。
STLコンテナが auto_ptr を格納しないように設計されているのではない。
その例は template定義側が auto_ptr を使うことを「自分で決めている」のであって、
template引数Tに対して何かを「想定」しているわけではない。
644からの話については、何の例にも説明にもならない。
話を趣旨に戻すが、
型名を名前に反映させるなんて、まったくナンセンスなんだよ。
0663625
NGNG>662
>型名を名前に反映させるなんて、まったくナンセンスなんだよ。
確かにポインタは型なんだけど、ただの型じゃなくて、元の型に依存した
派生型・ある型の別の側面といえる特性を持っていると思う。
ポインタなんて、元の型を操作することを想定しているわけだしね。
なので、「ある型のポインタ型」として使うような場合は、元の型との
関連性を示す上でも、元の型の名前にポインタを示すprefix,postfixを
付けるのが適当な命名方法かと思う。
#もちろん、よりふさわしい名前があれば別だけどね
……というか、ポインタごとに名前考えるの面倒臭くない?
0664625
NGNG>STLコンテナが auto_ptr を格納しないように設計されているのではない。
いや、>661も指摘してるけど、C++標準はSTLコンテナにauto_ptrを格納しない
ように設計されている(=COAPを禁止している)よ……
0665デフォルトの名無しさん
NGNG順番が逆。
まず、ふさわしい名前を考える。
ただ、最悪の場合として、型情報を複製したような変数名で済ませてしまうこともあるだろう。
// たとえば625のような考え方だとこうなってしまうものを、
FILE* pfile; // 入力ファイル
// こうしてほしいってこと。
FILE* input;
前者でコメントに入っていた情報が
後者ではコードに現れる点が重要な意味を持つ。
前者では、変数の宣言位置では意味がわかるが、
その後、その名前を使用したコードではほとんど意味がわからない。
そのため、くだらないコメントを複製する羽目になる。
fclose(pfile); // 入力ファイルを閉じる
fclose(input);
0666デフォルトの名無しさん
NGNG規格で決められてるってんなら、セクション番号で示してもらえる?
それができないなら、何を根拠に「規格で」とか「標準で」とか言ってるわけ?
ちなみに、↓を検索しても auto_ptr はひとつもヒットしないよ。
ttp://www.kuzbass.ru/docs/isocpp/lib-containers.html
0667625
NGNGオレはこうだけど……
//離れた場所で使用する場合
FILE* p_input_file
//local scopeのみ
FILE* ipt
……まあ、ファイルポインタは普通ポインタしか使わないから
プリフィックスはどうでもいいけど。
0668デフォルトの名無しさん
NGNGどうにも、糞コード確定のような・・・。
0669625
NGNGつながらん……
ちなみに根拠は「C++標準ライブラリ チュートリアル&リファレンス」
と「Effective STL」ね。
ANSIはどっかに行っちまったので確認できないや
0670デフォルトの名無しさん
NGNGエスパーじゃないから、お前の糞具合もわからないって寸法だ。
>>667
FILE*はfpだろうが。えっ、違う?
0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGinfp
outfp
0673デフォルトの名無しさん
NGNG0674625
NGNG自己フォロー。
COAPについて記載されているのは20.4.5の注釈のようですな。
ANSIがみつかっていないので正確かわからないけど
auto_ptr does not meet the CopyConstructible and
Assignable requirements for Standard Library container
elements and thus instantiating a Standard Library
container with an auto_ptr results in undefined behavior.
"禁止"じゃなくて"未定義"か……確かに字面だけなら662の内容の
方が近いかな?
ただ、C++の"未定義"は"禁止"とほぼ同じだと思うけどね。
#単に安全装置が付いてないだけ。
0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNGハゲしくスレちがい。>>666みたいなウンコは放置してくれ。
0677デフォルトの名無しさん
NGNG0678デフォルトの名無しさん
NGNG今やってる仕事、ソースの1行に対してコメントは1行「以上」が規約なので
あなたの大学の教授が言ってる事は常識的ではありませんね。
ちなみに、例えばソース 3500行。うち、空行とコメント行 2300行。
書いてる自分で言うのも何だが、こんな読みづらいソースは初めてだよ orz
関数を呼び出すたびに「関数名、引数、戻り値」を全部コメントつけなきゃならんから、
引数が3つある関数を呼ぶだけで、既にコメントは5行になるからな・・・
0679デフォルトの名無しさん
NGNG常識的でないというより、生産的ではない
でも、学生にはそのくらいでいい。
それと、
いろいろあって、今の君の会社で今のルールがあるんだと思う
無駄だと思うなら、君が上司になった時とりやめてしまえばいい。
0681678
NGNG0682r
05/02/10 01:17:11memsetで'\0'で埋める必要は無い。」
という規則を作りたい。本当に作りたい。
0683デフォルトの名無しさん
05/02/10 01:24:59もっと広く「意味のない memset をするな」のほうがいいだろう。
0684デフォルトの名無しさん
05/02/10 02:39:16strncpyは '\0' を付けてくれない事があるから、全くの無意味ではない。
無駄ではあるけどさ。
0685デフォルトの名無しさん
05/02/10 22:43:44than LENGTH characters, null characters are appended to the destina-
tion array until a total of LENGTH characters have been written.
だよ。
0686デフォルトの名無しさん
2005/05/21(土) 09:42:440687デフォルトの名無しさん
2005/06/26(日) 01:37:42+ ソース中で定数であることがわかると読みやすい(値について文脈を無視できる)
- 名前空間(クラス名)の修辞と組み合わせると汚い(例: File::READ_ONLY )
- マクロと区別できない(「全て大文字はマクロのみ」というルールと比較した場合)
是非を確定するまで行かなくても、↑で挙げた +/- についての突っ込みや
+/- の追加でもあれば、お願いします。
0688デフォルトの名無しさん
2005/06/26(日) 14:20:35非。大文字だと
-入力しづらい
0689デフォルトの名無しさん
2005/06/26(日) 16:22:02わはは。じゃぁ定数に限らず全部大文字にしたほうがいいな。
0690688
2005/06/26(日) 16:52:40日本語は読めていますか?マジレスのつもりだったんだけど。
>>687
各識別子が定数定義マクロであるか否かの判別に全部大文字を使うのはenumのなかったころのCの慣習だ
全部大文字の識別子なら定数定義マクロであるとすぐにわかったのだ。
だからと言って列挙値定数も全部大文字にしてしまうと、
全部大文字の識別子が列挙値定数か定数定義マクロかの判別が、すぐにはつかなくなる。
定数であることをすぐにわかるようにするための方法としては識別子の命名工夫のほうがbetterだろう
非。大文字だと
-読み辛い
0691デフォルトの名無しさん
2005/06/26(日) 20:41:57判別する意味があるのか?
> 定数であることをすぐにわかるようにするための方法としては識別子の命名工夫のほうがbetterだろう
では何故定数定義マクロの時にこうしなかったのか?
0692688
2005/06/26(日) 21:02:10まともな反論を、ありがとう
>> 全部大文字の識別子が列挙値定数か定数定義マクロかの判別が、すぐにはつかなくなる。
>判別する意味があるのか?
意味があるのか無いかは、わからない。ただ「無い」と断言するだけの背景もない。
>> 定数であることをすぐにわかるようにするための方法としては識別子の命名工夫のほうがbetterだろう
>では何故定数定義マクロの時にこうしなかったのか?
知りません。単に慣習だと思いますが。
列挙型というものは本来のCには無かったということを考えてみて下さい
「ありそうだな」と考えていた反論が来て面白い。
貴方は全大文字にすべきだと考えているの?
0693デフォルトの名無しさん
2005/06/26(日) 22:01:280694デフォルトの名無しさん
2005/06/26(日) 22:03:230695デフォルトの名無しさん
2005/06/26(日) 22:47:04enumが多用されてないのはそれほど使いどころが無いか、明らかな利点がないか
じゃない?
0696デフォルトの名無しさん
2005/06/26(日) 23:24:23> 知りません。単に慣習だと思いますが。
> 列挙型というものは本来のCには無かったということを考えてみて下さい
「列挙型」が無いとしても「定数定義マクロ」で「命名工夫」はできるだろ。
「慣習」で大文字だけになったんだろ?
「列挙型があるかないか」と「命名工夫をしなかったこと」には何の因果関係も無い。
君プログラマに向いてないよ。
0697デフォルトの名無しさん
2005/06/26(日) 23:34:140698デフォルトの名無しさん
2005/06/26(日) 23:37:46- int型と同じサイズになってしまう。(c++では改善されてるが)
- constにした方がウマー
- ソースの外部で定義できない。
- マクロの条件式で使えない
- grepで検索できない。
0699デフォルトの名無しさん
2005/06/26(日) 23:39:27「マクロを作ったけどコード上では変数か定数かすぐにはわかんないな」
「シンプルな言語仕様にしたのに言語仕様の追加なんぞしたく無いぞ」
「じゃあ変数は今までのとおり全部小文字、定数は全部大文字という習慣にしよう」
「いい考えだ。俺たちがこれから全部そうすれば、みんな真似するだろう」
0700デフォルトの名無しさん
2005/06/26(日) 23:41:33Windowsのウィンドウメッセージも#defineが使われている。連番になっているのだからenumのはまり役だと思うのだが。
0701688
2005/06/27(月) 00:08:21>「列挙型があるかないか」と「命名工夫をしなかったこと」には何の因果関係も無い。
因果関係なんぞはもちろんありませんよ。
当然の事ながら命名工夫というのはコーディング規約レベルの話です。
そして「定数定義マクロを全部大文字にする」というのは命名工夫の一種ではあるのですが、
また慣習であってこれはコーディング規約に優先します。
私は「後から出来た列挙型定数における命名工夫として、
既存の定数定義マクロと同一の命名工夫を使用するのは反対です」
と言っているだけ。
貴方の主張が読み取れません
「定数定義マクロを全部大文字にするというのが気に入らない」では無いですよね?
ご自分の主張を>>687に対してレスしてみたらいかがですか。
>君プログラマに向いてないよ。
もう手遅れですが
0702デフォルトの名無しさん
2005/06/27(月) 01:08:580703デフォルトの名無しさん
2005/06/27(月) 01:29:48ウィンドウメッセージの値は複数のヘッダに分散して定義されてるから、
enumは向いてないような。
0704デフォルトの名無しさん
2005/06/27(月) 01:45:28>私は「後から出来た列挙型定数における命名工夫として、
>既存の定数定義マクロと同一の命名工夫を使用するのは反対です」
俺は「変数と区別しやすい」という方を優先したいな。
逆に定数マクロと列挙型の区別がしにくいとしてもさほど不便を感じない。
定数マクロと区別したいケースってのを例示してもらえばわかりやすいのだが。
0705デフォルトの名無しさん
2005/06/27(月) 01:48:04>俺は「変数と区別しやすい」という方を優先したいな。
俺漏れも
0706701
2005/06/29(水) 11:31:48レスをありがとう
>俺は「変数と区別しやすい」という方を優先したいな。
>逆に定数マクロと列挙型の区別がしにくいとしてもさほど不便を感じない。
>定数マクロと区別したいケースってのを例示してもらえばわかりやすいのだが。
はい。それはそれで一つの見識だと思います。ただ
「マクロで定義できるのは整定数だけではない」という問題がありますね。
列挙型の場合は整定数ですが。
これについてはどうでしょうか
0707デフォルトの名無しさん
2005/06/29(水) 21:17:19作っても台無しだと思うが。
>>701のコーディング規約がどんなものか、一度見てみたいな。
#マクロの名称規則ひとつに静的/動的の別、影響範囲とか、
#事細かに規定しているんだろうか。
0708デフォルトの名無しさん
2005/06/29(水) 23:41:06整定数って、整数型の定数ってことだろ。
整定数以外のマクロって許すも何も、
FLT_MAX とか NULL とか offsetof とか標準にも山ほどあるんじゃないの?
0709デフォルトの名無しさん
2005/06/30(木) 00:18:58> 「マクロで定義できるのは整定数だけではない」という問題がありますね。
それからどうやって「整定数を全大文字で書くべきではない」に繋がるのかが分からない。
0710デフォルトの名無しさん
2005/06/30(木) 00:30:18おお、読み間違えていた。
でもそれだとますます意味がわからんな。
int型の値を持つマクロとfloat型の値を持つマクロがあるからといって
どうだというんだろう?
0711デフォルトの名無しさん
2005/06/30(木) 00:35:32定数を区別するために全大文字の名前を使うということは、
全大文字の名前を見たらそれは定数であると期待できる、
ということになるだろう。
その環境で、定数ではないマクロが全大文字で定義されていたら、
読み手に誤解を与える可能性が、、、、、あるかなぁ?
0712デフォルトの名無しさん
2005/06/30(木) 21:24:19> >>709
> 定数を区別するために全大文字の名前を使うということは、
> 全大文字の名前を見たらそれは定数であると期待できる、
> ということになるだろう。
そう。それが全大文字で書かれている理由じゃないのかね。
だから>>690にあるように
> 定数であることをすぐにわかるようにするための方法としては識別子の命名工夫のほうがbetterだろう
とすると↓のようはコードになるんだろうが、これが読みやすいとは到底思えないのだ。
int row = 3;
if (row > const_max_row) {
// error
}
0713デフォルトの名無しさん
2005/06/30(木) 21:25:00+↓のような
0714デフォルトの名無しさん
2005/07/03(日) 17:15:26・定数は全大文字
ってことだろ。
逆に、#defineであっても
・定数でなければ全大文字にしない
だろ。
errnoグローバル変数なんて#defineだったりするんだが、
それでも明らかに定数では無く変数として扱っているから
全大文字にしない。
0715デフォルトの名無しさん
2005/07/03(日) 17:24:30関数型マクロはどうする?
C++ で Class::CONSTANT や Namespace::CONSTANT はOK?
0716デフォルトの名無しさん
2005/07/03(日) 18:29:43普通は使わんな。
どうしても使う必要がある場合は、完全に関数として振舞うマクロとして作成し、
関数の名称規則に従う。要は定数か変数か関数か、その振る舞いに対して
名称規則を適用するということ。
マクロのような変幻自在のものをひとくくりにした名称規則を作っても意味がない。
0717デフォルトの名無しさん
2005/07/03(日) 21:48:50716も言ってるように、関数として扱うのだから関数の命名規約に沿うべき。
マクロかどうかを区別できないとか言ってる香具師はこれが分かってない。
0718デフォルトの名無しさん
2005/07/03(日) 22:42:06本当には関数に出来ない理由があるからじゃないの?
0719デフォルトの名無しさん
2005/07/03(日) 23:22:53マクロだと気をつけなきゃいけない点があるから、関数型マクロといっても
むしろ関数の命名規則より、それが関数じゃなくてマクロだとわかる規則に
従った方がいいと思う。
0720デフォルトの名無しさん
2005/07/04(月) 00:11:48errnoもグローバル変数に見えて実は関数だったりする。
普通は使わんな、てなことは無い。
0721デフォルトの名無しさん
2005/07/04(月) 00:40:01> マクロだと気をつけなきゃいけない点があるから
getc, getchar, putc, putcharを使う時に何に気を付けてる?マジレスキボン
0722デフォルトの名無しさん
2005/07/04(月) 00:58:10たとえばgetcなら、引数に副作用のある式を渡すときは気をつかうよね。
fgetcだとそんなこと気にしなくていい。
0723デフォルトの名無しさん
2005/07/04(月) 01:43:54その通り。何も考えずにマクロを使うと「一見関数のように見えるけど実は...」
というケースが頻出して管理しきれなくなる。
そういう事態を避けるために多少コーディングの自由度を制限してでも
管理性/保守性を上げようというのがコーディング規約だろう。
マクロの自由度を生かしながらきちんとした規約を定めようとしたら、相当
複雑なものになると思うが。俺はそこまでして定数マクロ以外のマクロを
使用するメリットってのはわからないから、さくっと禁止だね。
>>719の規約では、有名なBEGINマクロみたいなのは許されるの?
許されないとしたら、使っていいマクロとそうでないマクロを切り分ける
基準は何?
0724デフォルトの名無しさん
2005/07/04(月) 02:18:23保守性はまだしも。管理性ってなんですか?
「管理性」の一般的な語義として「把握する」というのがありますが。
「管理する対象」と「管理する目的」が全くわからない。
スレタイそのものの存在理由に関わる問題だと思うので回答請う
0725デフォルトの名無しさん
2005/07/04(月) 03:18:42723じゃないけど、manageabilityってことでは?
0726デフォルトの名無しさん
2005/07/04(月) 11:45:49関数いっこ、変数いっこ作るのに
上に申請して
受理されて
振番してもらって
やっと使えるヤツ
0727724
2005/07/04(月) 11:56:24manageabilityですか。なおさらわからなくなります。
その言葉はOS運用、ユーザ、電源、セキュリティなどに使用されますが、この場合は管理対象が曖昧です。
ソフト生産について沢山の開発組織体がそれぞれの取り組みを行なっている現状下において、
ソースコードの管理単位として「いわゆる関数」という粒度にとどまらず、さらに細粒度の管理を行なう傾向があります。
ファイル名/関数/関数名にとどまらず、インクルードファイル/マクロ/マクロ名/変数/変数名
なども(多くの場合DB化して)管理するのです。管理の粒度についての私見は差し控えますが、
「コーディング規約の目的として管理性を付加するのは、
その種の取り組みを行なっている組織だけでの事ではないのか」と思う次第。
コーディング規約の存在目的自体の認識がずれていると議論も混乱すると思うので、
あえて>>724で質問/確認してみたのです。
>>726
そういう運用をしているところもあるでしょうねw
0728デフォルトの名無しさん
2005/07/05(火) 01:26:01> たとえばgetcなら、引数に副作用のある式を渡すときは気をつかうよね。
どういうこと?具体的に副作用が出る式を書いて見てくれない?
0729723
2005/07/05(火) 01:42:45「『管理性』という言葉」に対する認識はずれているようだな。そういう大仕掛けで
仰々しいものだけが「管理」だという思い込みがあるのかな?
>>723に書いたのは保守性とほぼ同義だと思ってもらっていいよ。目的が保守に
限定されるわけじゃないからああ書いただけで。
0731デフォルトの名無しさん
2005/07/05(火) 22:14:09*p++
0732デフォルトの名無しさん
2005/07/06(水) 00:41:140733デフォルトの名無しさん
2005/07/06(水) 01:04:06とか?
0734デフォルトの名無しさん
2005/07/06(水) 02:09:48それでホントに副作用出るのか?
0735デフォルトの名無しさん
2005/07/06(水) 07:17:170736デフォルトの名無しさん
2005/07/06(水) 08:32:18例えば
FILE *getdatafile() {
static FILE *datafile = fopen(...); //C++だけど
return datafile;
}
で、getc(getdatafile()); とか。
まあ、実際にこんな使われ方されることはまず無いとは思うけど
絶対にないという程ではないんじゃないかな。
0737デフォルトの名無しさん
2005/07/06(水) 22:42:58getcが関数だと変わらないの?
0738デフォルトの名無しさん
2005/07/07(木) 00:04:09.....まず「副作用」の意味から調べてきな。
薬の副作用とは違うから。
0739デフォルトの名無しさん
2005/07/07(木) 00:44:29...まず規格によってマクロで実装されているとされているものについて調べてきな。
0740デフォルトの名無しさん
2005/07/07(木) 00:45:13正:実装すると
0741デフォルトの名無しさん
2005/07/07(木) 04:14:41たとえばglibcのmanだと
getc() is equivalent to fgetc() except that it may be implemented as a
macro which evaluates stream more than once.
となってる。手元にあるどっかから拾ってきた規格のドラフトだと
The getc function is equivalent to fgetc, except that if it is
implemented as a macro, it may evaluate stream more than once, so
the argument should never be an expression with side effects.
とまで明記されてる。
0742デフォルトの名無しさん
2005/07/09(土) 13:45:28全部大文字にしてるよね。あれを不愉快に思うのは俺だけ?
0743デフォルトの名無しさん
2005/07/09(土) 23:10:560744デフォルトの名無しさん
2005/07/09(土) 23:30:190745デフォルトの名無しさん
2005/07/11(月) 01:04:33あれ何でなんだろうね
0746デフォルトの名無しさん
2005/07/11(月) 08:15:19マクロだからだろ。
0747デフォルトの名無しさん
2005/07/11(月) 16:56:39ちゃんとtypedefを使っている。
0748デフォルトの名無しさん
2005/07/12(火) 22:45:120749デフォルトの名無しさん
2005/07/13(水) 01:42:250750デフォルトの名無しさん
2005/07/13(水) 06:47:54Javaなら、Java方式であるということ自体がメリットになるんだろうな。
C++とかの他の言語でやるメリットはわかんね。
0751デフォルトの名無しさん
2005/07/13(水) 08:10:070752デフォルトの名無しさん
2005/07/22(金) 23:41:11「プレフィックス」なのか「プリフィックス」なのか気になったので
gooで調べてみた。
俺には「プリセックス」としか聞えなかった。orz
0753デフォルトの名無しさん
2005/07/23(土) 04:08:15命名規則に言語依存の意味をくっつけるな。
pDataとかもいらん。ポインタのvectorとかだとdata[0]->xとか結局
pとか付いてないのに->アクセスになるし。
だったら変数名はGNUの規則でいいや。
0754デフォルトの名無しさん
2005/07/23(土) 04:23:410755デフォルトの名無しさん
2005/07/23(土) 04:43:23HANDLE CompletionPort, // I/O 完了ポート
LPDWORD lpNumberOfBytesTransferred,
// I/O 操作中に転送されたバイト数を
// 受け取る
LPDWORD lpCompletionKey, // ファイルの完了キーを受け取る
LPOVERLAPPED *lpOverlapped, // OVERLAPPED 構造体への
// ポインタを受け取る
DWORD dwMilliseconds // オプションのタイムアウト値
);
なんだよこのLPOVERLAPPED *lpOverlappedという表記は。
0756デフォルトの名無しさん
2005/07/25(月) 22:35:37なんでCompletionPortはハンガリアンじゃないんだ?
もうね、pとかlpとか付けなくていいよ、ウザイから。
0757デフォルトの名無しさん
2005/07/26(火) 20:55:16Win16の亡霊がこんなことろにも
0758デフォルトの名無しさん
2005/10/20(木) 09:10:44プリンセスとセクース!!
0759デフォルトの名無しさん
2005/12/20(火) 07:21:550760デフォルトの名無しさん
2005/12/29(木) 01:18:48vector<int> vSox;
void Test(int x,int y)
{
int i,j,k;
if(j)
{
int six[100];
int* p = &x;;
}
}
0761笹井奈琴
2006/01/07(土) 07:17:42if (0<a) {
って、()の外側に空白を置くように決めてる規約が結構あるよね。
これって見やすいのかなー?
()の内側の方がずーっと見やすいと思うな。
if( 0<a ) {
だって、関数呼び出しとかは、
foo (a,b) ;
って書かないでそ?
0762デフォルトの名無しさん
2006/01/07(土) 09:56:15括弧の内側に空白を置かないのは一般的な英文がそうなっているから。
ifと(の間に括弧をあけるのは関数呼び出しと違いを際立たせるため。
0763デフォルトの名無しさん
2006/01/07(土) 11:04:03たまにいるからやむを得ないんだろうけど。
0764デフォルトの名無しさん
2006/01/07(土) 13:33:04Visual C# 2005 のエディタが
if (0 < a) に訂正しやがるから、最近は自分のこれになってきた。
0765デフォルトの名無しさん
2006/01/09(月) 22:57:14理由は>>763らしいけど。
問題はキーワードでも関数呼び出しでもない sizeof 演算子をどうするかだ。
括弧つけない?
0766デフォルトの名無しさん
2006/01/10(火) 15:06:010767デフォルトの名無しさん
2006/01/10(火) 21:19:47話題はsizeofと括弧の間にスペースを入れるか入れないか、ではないのか?
0768デフォルトの名無しさん
2006/01/12(木) 00:34:05ない場合は付ける(というか付けないとコンパイルエラーになるから
スタイルの問題ではないか)
0769デフォルトの名無しさん
2006/01/15(日) 23:07:10sizeofはキーワードだろ。
俺はsizeofの後には空白を開ける。
0770デフォルトの名無しさん
2006/01/21(土) 23:45:100771デフォルトの名無しさん
2006/01/22(日) 16:35:450772デフォルトの名無しさん
2006/01/22(日) 17:34:110773デフォルトの名無しさん
2006/02/05(日) 03:01:070774デフォルトの名無しさん
2006/02/05(日) 16:13:12規約みたいなものが書いてあるサイトってありますか?
ググっても見つからなくて。。
manage→mng なのに manager→mgr とか理解不能です(汗
0775デフォルトの名無しさん
2006/02/05(日) 16:32:02そんな化石のようなルールが本当に今必要なのか?
たいした理由も無ければ array, manager とフルで綴れ。
0776デフォルトの名無しさん
2006/02/05(日) 16:48:09Webアプリ開発でURLを短くしたいので、知りたかったのです。
例えば、コーディング規約は遵守しているのに
master→mtr とか間違えて命名してたら格好悪いなぁと思いまして。。
0777デフォルトの名無しさん
2006/02/05(日) 17:19:01Web アプリの URL はユーザーが使うんだから、
コーディングの規約じゃなくてアプリの仕様として考えるべきじゃないの?
0778デフォルトの名無しさん
2006/02/05(日) 17:28:53URLについては色んな意味(GETメソッドは255バイトまでなので短くしたい等)
で調べたい、それだけです。
0779デフォルトの名無しさん
2006/02/05(日) 17:56:47> GETメソッドは255バイトまでなので短くしたい
これ、本当?何の仕様?
フルで綴れよ。間違えようも無いし。
0780デフォルトの名無しさん
2006/02/05(日) 18:18:570781774
2006/02/05(日) 18:32:54IE6に限定しないなら255が一般的かと。
>>775-779(780に対してではないです)
貴方も分からないのであれば変に突っ掛ってこないで下さいね。
他で尋ねます。では。
0782デフォルトの名無しさん
2006/02/05(日) 20:23:13長いとエディタを横スクロールさせないといけないことが多くなるし
たまにある20文字以上の変数名(クラス名)とか勘弁して欲しい
0783デフォルトの名無しさん
2006/02/05(日) 20:46:510784デフォルトの名無しさん
2006/02/05(日) 21:09:540785デフォルトの名無しさん
2006/02/05(日) 21:53:23そういう混乱はきちんとコメントを入れても避けられない。
0786デフォルトの名無しさん
2006/02/05(日) 21:56:57規約が守られなかったらってのはまた別の話。
0787デフォルトの名無しさん
2006/02/05(日) 22:02:01短くした方がいいよ
規約があるのか知らんが
0788デフォルトの名無しさん
2006/02/05(日) 22:11:09だいたい省略のルールなんて文書に起こそうと思ったら大変だろ?
(大げさな話、チェックもできるようにしようと思ったらもっと大変だろ?)
フルスペルのがいいと思うんだけどなぁ。
短くしたメリットや、古スペルにしたときのデメリットなんて、
ほんとのところ深刻な奴は無いんじゃないか?
0789デフォルトの名無しさん
2006/02/05(日) 22:12:4420 文字程度で長いですか?
VGA で開発してます?
0790デフォルトの名無しさん
2006/02/05(日) 22:17:37C++ 使うのは辛そうだな。
0791782
2006/02/05(日) 22:23:3520文字なら超えてること結構ある(´ρ`)
0792デフォルトの名無しさん
2006/02/10(金) 22:39:59ちなみに趣味じゃなくて、仕事で、ちゃんと出荷もした
コーディング規約もコードレビューも無かったからな
0793デフォルトの名無しさん
2006/02/16(木) 15:46:12名前空間がないと結構つらいかも。
0794デフォルトの名無しさん
2006/03/07(火) 00:12:13みんなはカンマどっちにつける?
こーゆーの
select id, name
select
id
,name
0795デフォルトの名無しさん
2006/03/07(火) 00:17:03その流れで、カンマで行を区切るときも行頭に来るようにしている。
0796デフォルトの名無しさん
2006/03/07(火) 09:59:240797デフォルトの名無しさん
2006/03/07(火) 20:39:30行末だと、なんか目がちらつく感じがする。
#SQLのインデントは結構迷う。
0798デフォルトの名無しさん
2006/03/08(水) 08:52:350799デフォルトの名無しさん
2006/03/10(金) 01:04:18こんなん気をつけてるけど、
・書式、文言の統一
・同一処理は参照で
0800デフォルトの名無しさん
2006/03/10(金) 11:47:250801デフォルトの名無しさん
2006/03/12(日) 23:17:130802デフォルトの名無しさん
2006/03/12(日) 23:19:31それは、情報量だけ多くて本質的なところが見えない悪い仕様書の例。
doxygenで何でもかんでもYESにしてドキュメント吐かせるとよくわかる。
0803デフォルトの名無しさん
2006/03/12(日) 23:27:54コードに近いものなら、そんなドキュメントいらんよ。
その上の機能設計がしっかりしていれば、それでいい。
0804デフォルトの名無しさん
2006/03/18(土) 20:20:19関数名: u1g_PRODN_MOD_SMOD_GetCnt_pstu2
u1g … 戻り値=unsigned char, グローバル関数
PRODN … 製品名
MOD … モジュール名
SMOD … サブモジュール名
GetCnt … 本当の関数名 (各単語は3文字略称で)
pstu2 … 引数が (構造体へのポインタ, unsigned short)
関数名は31文字以内死守
もちろんどんな関数名も30文字近くになるし
同一ファイル中に出てくる関数名は同じ文字列が含まれる
限界近くになると真っ先に本当の関数名の部分をなんとか短くして我慢
pu1とかpstu1とかの型情報は、化石と思われているようだけど
Cでは型の間違いとか暗黙の変換とかがバグを引き起こすからね
読みづらくはなるが、潜在バグを減らすためには不可欠
これが日本の組み込みソフトの品質を保つ……本当か?
0805http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 21:06:42もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0806デフォルトの名無しさん
2006/03/18(土) 21:51:48名前のマングリングを人が、人のためにやってるのか…
0807デフォルトの名無しさん
2006/03/19(日) 01:10:36( ・∀・)つ〃∩ へぇーへぇーへぇー
マングリング
コンパイラは関数に装飾された名前(以下、装飾名)を作成します。
リンカは装飾名を使って、別ファイルにある関数や変数を参照します。
関数を正しく呼び出すのに、関数名だけでは不十分な場合があり、
名前を装飾することをマングリング(mangling)と呼びます。
0808デフォルトの名無しさん
2006/03/19(日) 01:21:45今まで"static"って複数ユーザで
使いまわすモノだと思ってた...
こーゆー時は"static"使うと便利だよとか、
ここは使うしかないっしょ!!ってのある?
今はsingletonパターン使うときくらいしか使ってない
こーゆーの
private static singleton;
if (singleton == null) {
this.singleton = new Class();
return this.singleton;
}
return this.singleton;
0809デフォルトの名無しさん
2006/03/19(日) 01:23:23意味がわかっていればそんな疑問も湧かないはずなんだが。
0810デフォルトの名無しさん
2006/03/19(日) 16:17:57同意。
>>808
singleton なクラスにだけ使っとけ。
0811デフォルトの名無しさん
2006/03/19(日) 17:25:490812デフォルトの名無しさん
2006/03/19(日) 22:11:48亀だが、
http://www.thefreedictionary.com/
の、Acronym に色々あるべ。
↑スペルミスがあると思うけど気にするな。
0813デフォルトの名無しさん
2006/03/20(月) 02:14:05C++ ではstatic宣言の有無で区別するので強力ですよ。
Singleton用途でGlobalスコープにおく意図だけでstaticをつかっててはMOTTAINAI。
あ、Javaでも同じですか.... へんなことかいてたらすみません。
0814デフォルトの名無しさん
2006/03/20(月) 07:06:36意味的に 型で共有されるべき操作な時とか
Utilityクラス
あるクラスを定義したとき、そのNullオブジェクトとか定数とか
0815デフォルトの名無しさん
2006/03/20(月) 12:47:06いやいや、そういう使い方を定義する規約ってのも存在する。
0816デフォルトの名無しさん
2006/03/21(火) 01:23:19ちょ、「static就職子はSingletonパターンを実装する際にしか使用してはいけない」
とかいうコーディング規約あったらマジキレるぞ俺。C++にしろJavaにしろだ。
0817デフォルトの名無しさん
2006/03/21(火) 01:24:21修飾子な
0818デフォルトの名無しさん
2006/03/21(火) 04:24:28>>816 は、「static 就職子は Singleton パターンを実装する際にしか使用してはいけない」の「就職子」の誤字にキレちゃうんじゃない?w
0819デフォルトの名無しさん
2006/03/21(火) 18:00:35816と817は同一人物だろ。
0820デフォルトの名無しさん
2006/03/29(水) 03:19:260821デフォルトの名無しさん
2006/03/29(水) 10:27:04getUserNameを、getUNとかに略すのやめてほしいとです。
メソッドの目的がさっぱりわかりません・・・('A`)
0822デフォルトの名無しさん
2006/03/29(水) 17:43:11国連をゲットするんでしょ。
0823デフォルトの名無しさん
2006/04/07(金) 15:55:220824デフォルトの名無しさん
2006/04/11(火) 23:50:34asMax とする
0825デフォルトの名無しさん
2006/04/12(水) 09:19:220826デフォルトの名無しさん
2006/04/12(水) 10:35:23ストリーム演算子の宣言はクラス定義の外に置くべきでしょうか。
外に置くと、クラスの利用者がヘッダを見た時に見落としそうな気がしています。
と言って、friendをつけたままだと、演算子のソースコードを見た時に違和感があります。
0827デフォルトの名無しさん
2006/04/12(水) 10:48:20クラス変数や引数の宣言にこんなことやってる。
目的は、ソースの可読性を自分なりに向上させたいってところ。
クラス変数: mClassObject
(先頭にmを付ける)
メソッドの引数: stringArg_
(末尾にアンダースコアを付ける)
他に、どんなやりかたあるのかな?
0828デフォルトの名無しさん
2006/04/12(水) 11:11:35外だな。別ファイルでもいいが。
もはやオブジェクト指向とはアンチパターンである
クラスをいかに使わないかだ
0829デフォルトの名無しさん
2006/04/12(水) 11:14:55私は
クラス変数・インスタンス変数:Arg_
ローカル変数:arg
引数:Arg
です
あ,C++でした
0830デフォルトの名無しさん
2006/04/12(水) 11:25:17argの意味わかってる?
0831デフォルトの名無しさん
2006/04/12(水) 11:56:45なるほど。
javaだと変数名の先頭に大文字は推奨されないんで、
アンスコとかをうまく使おうかと思ってます。
0832デフォルトの名無しさん
2006/04/12(水) 18:48:040833デフォルトの名無しさん
2006/04/12(水) 23:17:15{
コンストラクタ
変数1
ゲタセタ
メソッド()
メソッド()
}
って、変ですか?
0834デフォルトの名無しさん
2006/04/13(木) 00:41:37はい、恋です
0835デフォルトの名無しさん
2006/04/13(木) 03:43:51・種類より public/private の区別を優先して並べて欲しい。
・「ゲタセタ」と「メソッド」を区別するのも意味なさげ。
オブジェクトへの副作用有りと無しで分けてあると助かる。
0836デフォルトの名無しさん
2006/04/13(木) 12:33:45ごめん,なんも考えずに書き込んだ
ハズカシス
0837デフォルトの名無しさん
2006/04/15(土) 22:28:40Javaのコーディング規約でいいんじゃない?
シンプルで利にかなっている。
0838デフォルトの名無しさん
2006/04/16(日) 22:11:46描画オブジェクトに表示プライオリティを付ける場合、
値の大きいほうと小さいほう、どちらを手前に表示させるべきですか?
0839デフォルトの名無しさん
2006/04/16(日) 23:21:01何が目的か、による。
例えば、WindowsのウィンドウのZオーダーは、0が最前面。
これは、ウィンドウを、ほかのウィンドウの後ろに持って行くよりは、
手前に持って行くことの方が多いだろうということから、
とりあえず、0を設定しておけば目的を達成できるだろうという考えだな。
0840838
2006/04/17(月) 00:19:12ゲームでのオブジェクトなのですが、
WindowsのZオーダーを踏襲しときます。ありがとうございました。
0841デフォルトの名無しさん
2006/04/17(月) 14:05:56別ファイルでがんばってみます。
0842デフォルトの名無しさん
2006/08/21(月) 23:39:10と主張している本があったと思うのですが、
何の本だったかわかる方いませんか?
プログラミング作法かコードコンプリートのような、けっこう
定番のものだったと思うのですが。
0843デフォルトの名無しさん
2006/08/24(木) 11:07:10CVSとか使ってコード管理していると、
その手のコメントアウトがどれだけ残す意味のないものか良くわかる。
0844デフォルトの名無しさん
2006/08/24(木) 17:07:25一例: MISRA
なぜか#if 0は禁止していない。
0845デフォルトの名無しさん
2006/08/25(金) 01:00:53これも美的感覚としては受け入れたくないけど、
ちゃんと書いてあればけっこう助かる気がする。
いったん「どう変更されたんだ?」と疑問に思ってから
csv logやannotateする手間が省けるから。
0846デフォルトの名無しさん
2006/08/25(金) 01:19:41だが、更新忘れたり、めんどくさくてやらなくなったりして放置されたコメントならHDDの肥やしに過ぎない。
0847デフォルトの名無しさん
2006/08/25(金) 09:41:08コンパイルの際はちょっと工夫がいるが
0848デフォルトの名無しさん
2006/08/26(土) 15:12:48コミットしないと変更した場所をまた変更すると履歴が残らないので不可。
0849デフォルトの名無しさん
2006/08/27(日) 01:32:00「ファイル」→「版の管理」→「文書を閉じる時に新しい版を自動的に保存する」
0850デフォルトの名無しさん
2006/08/28(月) 17:09:090851デフォルトの名無しさん
2006/09/02(土) 09:45:25void foo( 出力、入力、入力 )と
void bar( 入力、入力、出力)の
どっちがいいんだろう。
memcpy()はfooのほうだけど、boostライブラリはbarみたいだ(あまりよく知らん)
0852デフォルトの名無しさん
2006/09/02(土) 12:54:03<algorithm>の関数も出力が後。
0853デフォルトの名無しさん
2006/09/02(土) 20:08:08STLのAlgorithm? copy関数は出力が後ろだね。
0854デフォルトの名無しさん
2006/09/03(日) 09:37:34http://www.gfd-dennou.org/arch/comptech/cstyle/cstyle-ja.htm
ちょっと古いかね。
0855デフォルトの名無しさん
2006/09/10(日) 23:35:52工夫とか、気をつけたほうがよいところとか。疑似 URL で表現しろとか。
または、これはダメ、という例でも良いです。よろしくお願いします。
0856デフォルトの名無しさん
2006/09/11(月) 08:41:16ソースファイルのディレクトリ構造と一致させる。
0857デフォルトの名無しさん
2006/09/11(月) 18:12:27例えばこんな感じですか?
namespace fuga::include::MultiMethod
namespace fuga::src::TriState
ただ、ここまで深い階層をつける予定はないので、どちらかと言うと、
最上位の名前空間(↑で言うところの fuga)を定義する時のポイント、
すべきこと、すべきではないこと、工夫といったあたりでアドバイスが
頂けると嬉しいです。
0858デフォルトの名無しさん
2006/09/11(月) 23:12:30#include "fuga/include/MultiMethod.hpp"
とか書いてるならそうなる。
別件になるんだろうけど、ヘッダのパスに "include" が現れるのはクドイね。
単体での付け方に「名前空間だから」という手法は無いと思うよ。
あ、検証方法として、名前空間内の名前をグローバルから
全部読み上げてみて違和感がなければ OK とか。
0859デフォルトの名無しさん
2006/09/11(月) 23:17:26くどすぎるくらい長い方が安全かとも思う。
0860デフォルトの名無しさん
2006/09/11(月) 23:55:19include パスはコンパイラオプションで指定するので、実際には
#include "MutiMethod.h"
ですね。ライブラリを置く場所はユーザーの都合で変えられてしまう
こともあるから、あんまり物理的な位置に依存しないほうがいいのかな。
例えば、/usr/local/include にインストールされるヘッダなどは、この
手が使えないわけですよね。
0861デフォルトの名無しさん
2006/09/12(火) 00:13:46どこにインストールされるとしても、 #include で指定するパスと
namespace を対応させるってのが >>856 のルール。
namespace hoge で包んでるライブラリのヘッダを /usr/local/include に
インストールするとすれば、ヘッダはすべて /usr/local/include/hoge という
ディレクトリ以下に収める。
0862デフォルトの名無しさん
2006/09/12(火) 01:44:31boost
0863デフォルトの名無しさん
2006/09/13(水) 21:17:24ググっても出てこないような言葉で
0864デフォルトの名無しさん
2006/09/14(木) 14:17:010865デフォルトの名無しさん
2006/09/14(木) 14:39:490866デフォルトの名無しさん
2006/10/13(金) 22:25:420867デフォルトの名無しさん
2006/10/30(月) 01:19:10readHoge() にするか、 getHoge() にするかよく悩む。
誰か、「新感覚☆キーワードで英会話」みたいな感じで
readとgetのコアイメージを俺に教えてくれ
0868デフォルトの名無しさん
2006/10/30(月) 01:20:260869デフォルトの名無しさん
2006/10/30(月) 02:01:18述語を何にすべきかは、主語で決まる。
迷ったらとりあえず意味の広いget/setが無難だと思われ。
…と英語が得意でもないのに答えてみる。
何か間違ってたら指摘よろ>エロイ人
0870デフォルトの名無しさん
2006/10/30(月) 06:21:330871デフォルトの名無しさん
2006/10/30(月) 11:21:14readはFileなりStreamなり、プログラム外からの読み込みに使ってる。
それ以外は、基本的にget/set。 値を保持するListとかMapだと、setの変わりにadd・putを使う。
つーても全部コレに合わせてるワケでもないが。
判定系は、booleanを返す物なら is で、判定して内部状態が変化する物だとcheckかな。
countなんかは get***Count() って感じ。
チラシ裏だな。
0872デフォルトの名無しさん
2006/10/30(月) 16:30:18あえて使うなら、副作用のみで真偽は返さないかな。
0873デフォルトの名無しさん
2006/10/30(月) 18:29:41iostream や、コンテナに習って、プロパティのように使うなら、get/set はつけない。
retval = obj.value(); // get
obj.value( newval ); // set
if( obj.empty() ) // check
それ以外は、get* / set* / put* / is* を使い分ける。
0874デフォルトの名無しさん
2006/10/30(月) 23:07:13iostream の value(T&) や、標準コンテナの empty() は失敗だろ。真似しないほうがいい。
0875デフォルトの名無しさん
2006/10/30(月) 23:24:350876デフォルトの名無しさん
2006/10/31(火) 03:01:57まあ、自分で書くとしたら明示的にget/set/isを付ける派ではあるけども。
checkに関しては明確にこうと決めているものが思い当たらなかったので
自分が書いたソースコードにgrepをかけてみたら、
if (checkMD5()) /* ... */;
みたいなコードが出てきた。
今にして思えば isValidMD5() の方が良いのかも?
0877デフォルトの名無しさん
2006/10/31(火) 03:04:01とするとむしろ obj.hasValidMD5(validhash) とかの方が…? 悩む
0878デフォルトの名無しさん
2006/10/31(火) 11:06:470879デフォルトの名無しさん
2006/10/31(火) 12:53:30あと、invalid な MD5 値を何かに使う予定がないなら、
単にhasMD5、getMD5 でいいと思う。
0880867
2006/10/31(火) 13:48:030881デフォルトの名無しさん
2006/10/31(火) 22:50:310882デフォルトの名無しさん
2006/11/01(水) 11:45:47md5hash_t md5of( T const & t ) { ... }
if( md5of( obj ) == validhash ) {
// valid
} else {
// invalid
}
とかは? 見た目に分かりやすい。
0883デフォルトの名無しさん
2006/11/24(金) 12:09:45クラスなら C
メンバ変数なら m_
ポインタなら P
文字列なら状況により str
って付けてるけど、構造体は S だと文字列みたいだから、
とりあえず全て大文字にしているけど、おもいらどうしてる?
0884デフォルトの名無しさん
2006/11/24(金) 12:32:44言語による。
てか、その言語のライブラリの規約にそろえる。
俺はMS信者なんで、C++の場合には MFC の規約にそろえてた。
0885デフォルトの名無しさん
2006/11/24(金) 12:55:21namespaceで名前空間を切れば名前衝突しないし
0886デフォルトの名無しさん
2006/11/24(金) 19:32:45ポインタ型は *_ptr
クラススコープの外部参照可能な型は *_type
テンプレート引数型は タイトルケース(最初の文字だけ大文字)
それ以外の型は適当な名前
なお基本的に全て小文字
ってとこかな。
0887デフォルトの名無しさん
2006/11/24(金) 20:38:18いかにも自作クラスですって雰囲気にしたい場合はずらす。
0888デフォルトの名無しさん
2006/11/24(金) 22:27:520889デフォルトの名無しさん
2006/11/24(金) 23:11:36こんな感じ
グローバルスコープ
TFoo 型
Foo 変数
PFoo ポインタ
ローカルスコープ
t_foo 型
foo_ メンバ変数
foo ローカル変数
p_foo ポインタ
0890デフォルトの名無しさん
2006/11/25(土) 12:49:48>>886
gcc だと、*_t ってのを使うけど、自分で型定義したのと区別したい
時って無い? 自分で定義したのも *_t としちゃうとまぎらわしくないかい?
0891デフォルトの名無しさん
2006/11/25(土) 14:50:390892デフォルトの名無しさん
2006/11/25(土) 16:19:100893デフォルトの名無しさん
2006/11/25(土) 16:30:47time_tとかの構造体型名は言語仕様じゃなく標準ライブラリ仕様のような気もする。
0894デフォルトの名無しさん
2006/11/25(土) 16:43:41たいていはlongの別名
0895デフォルトの名無しさん
2006/11/25(土) 17:07:21全部ライブラリだよ。言語で *_t なのは、 wchar_t ぐらいかな。
0896デフォルトの名無しさん
2006/11/25(土) 21:46:16ptrdiff_tは、C++の仕様に盛り込まれてる
size_tは覚えてない
0897デフォルトの名無しさん
2006/11/26(日) 00:02:040898デフォルトの名無しさん
2006/11/26(日) 00:41:420899デフォルトの名無しさん
2006/11/26(日) 00:59:470900デフォルトの名無しさん
2006/11/26(日) 01:00:51どこからそんなデマを?
0901デフォルトの名無しさん
2006/11/26(日) 08:53:34そう思っとけ、馬鹿
0902デフォルトの名無しさん
2006/11/26(日) 09:19:19:1: error: `ptrdiff_t' does not name a type
0903デフォルトの名無しさん
2006/11/26(日) 09:21:19どこに正規表現が出てきた?
0904デフォルトの名無しさん
2006/11/26(日) 09:36:20誰がコンパイラ定義だと言ったよ(藁
0905デフォルトの名無しさん
2006/11/26(日) 09:48:45「コンパイラ定義」ってなぁに?
0906デフォルトの名無しさん
2006/11/26(日) 13:22:370907デフォルトの名無しさん
2006/11/26(日) 13:30:53正規表現の.と同じような感じだ
0908デフォルトの名無しさん
2007/01/02(火) 13:36:48メンバ変数のm_Foo -> thisを付け忘れるから
グローバル変数の Grobal_FooFooFooFooFoo(Grobal_ + 最低20文字以上) -> それぐらいの覚悟がない限り使うなということで
後はいらね
0909デフォルトの名無しさん
2007/01/02(火) 14:05:51さすがにスペルミスで恥をかく覚悟まではしたくない
確かに誰も使わなくなるな
0910デフォルトの名無しさん
2007/01/04(木) 17:26:09気持ちは分かる。
言語仕様で this を強制して欲しいと思う。
0911デフォルトの名無しさん
2007/01/04(木) 19:03:040912デフォルトの名無しさん
2007/01/04(木) 21:35:130913デフォルトの名無しさん
2007/01/04(木) 23:11:18とか、smart な IDE を前提にすると
嫌がらせとしか思えないような構文糖(と言う名の罠)も
そろそろなかったことにして欲しい。
Ruby の名前見ただけでインスタンス変数なのかローカル変数なのか分かる、
ってのはシンプルで良いアイデアだと思った。
0914デフォルトの名無しさん
2007/01/06(土) 17:25:090915デフォルトの名無しさん
2007/01/06(土) 17:41:156桁開けてから書き始めるとか、今日的に許される文法じゃないよな。
0916デフォルトの名無しさん
2007/01/06(土) 17:55:31時代遅れ。
名前でそういうの判断しないといけなくなってる時点で悪いコーディングスタイル。
>>915
先生と呼ばれるような人は基本的に生きる化石。
0917デフォルトの名無しさん
2007/01/06(土) 18:22:36だってさ。>>913
0918デフォルトの名無しさん
2007/01/06(土) 18:42:58どうでもいいが、そのオプション
標準ヘッダファイルのコンパイルで、死ぬほど警告が出るから
全く役に立たんだろうよw
0919デフォルトの名無しさん
2007/01/06(土) 19:13:57this-> って書く代わりに @ ってつくよとか、その程度なのに。
(this-> は省略できるが @ は出来ない。)
0920デフォルトの名無しさん
2007/01/07(日) 18:01:53914みないなレスがつくわけなんだが
0921デフォルトの名無しさん
2007/01/07(日) 21:35:350922デフォルトの名無しさん
2007/01/08(月) 19:53:520923デフォルトの名無しさん
2007/01/11(木) 21:59:370924デフォルトの名無しさん
2007/01/11(木) 22:22:520925デフォルトの名無しさん
2007/01/13(土) 00:28:200926デフォルトの名無しさん
2007/01/15(月) 13:40:330927デフォルトの名無しさん
2007/01/16(火) 19:35:490928デフォルトの名無しさん
2007/01/18(木) 00:33:13> int i, j, k;
After
> int i; /* ループカウンターその1 */
> int j; /* ループカウンターその2 */
> int k; /* ループカウンターその3 */
0929デフォルトの名無しさん
2007/01/18(木) 01:01:52一行コメントは // で始める
を規約に加えたら良かったのに。
0930デフォルトの名無しさん
2007/01/18(木) 14:28:28ご愁傷様。その規約最悪だね。
0931デフォルトの名無しさん
2007/01/19(金) 20:51:16デスマーチprojectに放り込まれたか?
まあ死なない程度に頑張れ…
ちゃんと死ぬ前に病院行ってドクターストップもらうんだぞ。
0932デフォルトの名無しさん
2007/01/20(土) 08:52:33締め切りは昨日だけど、早々に終わったし
しかも、昨日までやってた仕事は、コーディング規約なし
規約全くなしだから、コメントもほぼ無いんで
人によっては憤慨してるんだが、個人的にはコメントないほうが読みやすいし
経験的に規約は少ないほうが(無いほうが)快適だな
逆に規約でがちがちのプロジェクトも程々の規約のプロジェクトも経験はあるけど
0933デフォルトの名無しさん
2007/01/20(土) 08:56:23自主的に、Afterみたいな感じで書く人もいるのが笑えた
そいつの書いたソースだけ、読みにくいんだけどw
2行で書ける処理を、20行で書くなよって感じで
0934デフォルトの名無しさん
2007/01/20(土) 09:13:34> if ( func(foo1, foo2, foo3, foo4) != OK )
> return ERROR;
After
> /**************************************************************/
> /* コメント */
> /**************************************************************/
> rc = func( foo1, /* 素敵コメント */
>. foo2, /* 素敵コメント */
>. foo3, /* 素敵コメント */
>. foo4 ) ; /* 素敵コメント */
>
> /**************************************************************/
> /* コメント */
> /**************************************************************/
> if ( rc == OK )
> {
> /* 何もしない */
> }
>
> /**************************************************************/
> /* ここにコメント書くなよw みづれーっての */
> /**************************************************************/
> else
> {
> status = ERROR ;
> return( status ) ;
> }
0935デフォルトの名無しさん
2007/01/20(土) 10:11:00少人数で意思疎通がしっかりしてるプロジェクトでは規約なんて全く必要ない。
言語・開発環境の一般的な命名規則に従うだけなのでわざわざ文章化する必要も無いし、
知らないやつ・調べる気のないやつは、そもそも使い物にならんし邪魔なだけなのでプロジェクトから外す。
大人数で意思疎通がグダグダでスキルレベルもバラバラで
かつコード書けないオッサンが管理者(と言う名の置物)やってると、
プロジェクト管理の一環として、素敵規約満載の資料が配られる。
関数名や変数名が記号的になり、使用してる関数・変数の一覧を
管理台帳に記載しろとか言い出す。
管理台帳のサイズが何故か管理者の評価につながるので
管理者は規約に従わないやつを見つけると激怒する。
0936デフォルトの名無しさん
2007/01/24(水) 23:24:09おまえはさすがにかわいそうな子だな
0937デフォルトの名無しさん
2007/01/25(木) 00:19:55おもしろすぎる。
0938デフォルトの名無しさん
2007/01/25(木) 01:54:510939デフォルトの名無しさん
2007/01/25(木) 03:23:49・必ず改行してから中括弧・継承は混乱の元なので内包
ソースが格段に見やすくなります。長年の試行錯誤のうえの最終形態です。
class Test
{
static const MaxValue = 1000;
BaseTest Base;
int Value;
bool IsCreate;
public:
bool Create()
{
Value = MaxValue;
if(IsCreate)
{
return false;
}
else
{
IsCreate = true;
return true;
}
}
void Set(int Data1, int Data2)
{
Value = Data1 + Data2;
}
};
かなり見やすいでしょ!
0940デフォルトの名無しさん
2007/01/25(木) 06:28:220941デフォルトの名無しさん
2007/01/25(木) 08:16:510942デフォルトの名無しさん
2007/01/25(木) 21:41:16今、疑似体験した気がしたw
0943939
2007/01/26(金) 00:00:010944デフォルトの名無しさん
2007/01/26(金) 00:02:040945デフォルトの名無しさん
2007/01/26(金) 00:09:140946デフォルトの名無しさん
2007/01/26(金) 00:17:01C#風だね
0947デフォルトの名無しさん
2007/01/26(金) 02:05:45「見やすさ」より「分かりやすさ」にもっと気をつけろ。
例えば
MaxValue→DefaultValue
Create→Initialize
Set→StoreSum
とした方が、実際の動作・役割が分かりやすいはずだ。
0948デフォルトの名無しさん
2007/01/26(金) 02:14:17なんて、先日まで考えておりました orz
0949デフォルトの名無しさん
2007/01/26(金) 04:57:290950デフォルトの名無しさん
2007/01/26(金) 08:14:35C#ともちょっと違う。
0951デフォルトの名無しさん
2007/01/26(金) 08:16:12Linuxとか有名ソフトでも、80桁以内になってるのはちょくちょくあるね。
0952デフォルトの名無しさん
2007/01/26(金) 08:20:24桁数については、決めないとみんなバラバラの環境で適当に判断するから
不統一になっちゃうね。どこかに決めるとしたら、やっぱり 80 桁が適当かな。
っていうか決めないと 200 桁とか書かれた時に指摘しづらくて困る。
150 ならいいのか? 100 ならいいのか?とか。
0953デフォルトの名無しさん
2007/01/26(金) 08:23:5780だとちょっとつらい。
0954デフォルトの名無しさん
2007/01/26(金) 20:15:150955デフォルトの名無しさん
2007/01/26(金) 21:32:59君は未だマシな方じゃないか?
>>429-431を見よ
似たようなのを俺も経験してる
0956デフォルトの名無しさん
2007/01/26(金) 21:36:46継承を捨てるとレイトバインディング出来ないけど、それはいいのかねえ?
まあ、他人様のやることなんで、どうでもいいけど
0957デフォルトの名無しさん
2007/01/26(金) 21:40:18継承と内包は、用途によってどっちを使うか決まる性質のものだと思うのだが。
0958デフォルトの名無しさん
2007/01/27(土) 03:45:08レイトバインディング(のマネ)は継承を使わずともできる。
ただし継承による実装より、面倒かつ理解しがたくなると思うが。
しかし面倒な手法を選択するのも>945の自由だ。
0959デフォルトの名無しさん
2007/01/27(土) 13:05:40「お前レイトバインディングなんて使ったこと無いし、
そもそも、レイトバインディングなんて知らないんだろ?」
っていうのを、ソフトに言い換えただけなんだか
0960デフォルトの名無しさん
2007/01/27(土) 21:47:53senser って何やねん?ゴッツイ違和感感じるわ!!!
0961デフォルトの名無しさん
2007/01/27(土) 21:50:250962デフォルトの名無しさん
2007/01/27(土) 22:27:250963デフォルトの名無しさん
2007/01/27(土) 23:23:390964デフォルトの名無しさん
2007/01/27(土) 23:27:230965デフォルトの名無しさん
2007/01/29(月) 01:10:57窓+IME使ってるなら、IMEのプロパティ開いて
「カタカナ英語辞書」をONにすれ。
「レシーブ」→「receive」と変換できる。
0966デフォルトの名無しさん
2007/01/29(月) 01:41:47>一時変数全てにコメントさせる前に、
遅レスですまんが、フツー、一時変数ってキャストの結果や関数の戻り値なんかの
名前すらない変数のことを言うんじゃないのか?
0967デフォルトの名無しさん
2007/01/29(月) 04:12:28それはどこの世界での「フツー」なの?
0968966
2007/01/29(月) 05:20:35どうもローカル変数と同義使われることが多々あるみたいだな。
0969デフォルトの名無しさん
2007/01/29(月) 06:51:370970デフォルトの名無しさん
2007/01/29(月) 07:14:360971デフォルトの名無しさん
2007/01/29(月) 08:36:190972デフォルトの名無しさん
2007/01/29(月) 20:58:100973デフォルトの名無しさん
2007/01/31(水) 00:58:31これが変なのではあるまいか
僕は一時変数はテンポラリ変数って意味で使うなあ
まんまかw
0974デフォルトの名無しさん
2007/01/31(水) 01:16:31たぶん暗黙のコンストラクタで作られるよーなやつのことを指してる気がする。
0975デフォルトの名無しさん
2007/01/31(水) 23:30:550976デフォルトの名無しさん
2007/02/01(木) 01:00:02まあ、それを一時変数とは呼ばんとおもうが
0977デフォルトの名無しさん
2007/02/01(木) 01:20:340978976
2007/02/01(木) 01:25:51もうアンセブラのプログラム10年くらい組んでないせいか
手が勝手にレジストリとか打ってたw
0979デフォルトの名無しさん
2007/02/01(木) 01:33:100980デフォルトの名無しさん
2007/02/01(木) 20:35:030981デフォルトの名無しさん
2007/02/04(日) 14:40:49リーナスの意見の、
・長時間のプログラミングで目が疲れた時には幅8の方が見易い
・多重ネストで右の方へ寄っていくようなプログラムは見直すべき
は同意かなと。BSDとLinuxは8だね。
GNUのような幅2というのは論外として、世間一般では4か8の
どちらが多数派なのかなー?
0982デフォルトの名無しさん
2007/02/04(日) 14:52:10仕事上の規約としてはどうだろうな。8スペースが多い気がするけど。
0983デフォルトの名無しさん
2007/02/04(日) 14:56:06になるな。
0984デフォルトの名無しさん
2007/02/04(日) 15:16:13Java だと クラス + メソッド + try でネスト3 がスタートなので8はちょっとつらい.
0985デフォルトの名無しさん
2007/02/04(日) 15:52:48タブの混在は許さない方が無難ですな。
結局タブ幅指定を強制することになり、タブを使用する意味が小さくなる。
0986デフォルトの名無しさん
2007/02/04(日) 16:17:29ちなみにお前はソフトタブ派? それともハードタブ派?
議論すべきはまずそこからだろ。
0987デフォルトの名無しさん
2007/02/04(日) 16:23:10ソフトタブ: スペースでインデント
という意味らしいのだが、なぜこれをソフト/ハードタブという言い方で
区別するのだろう。後者はTABじゃないのに。
0988デフォルトの名無しさん
2007/02/04(日) 16:36:28入力時にはTABキーで入力するからじゃね?
0989デフォルトの名無しさん
2007/02/04(日) 16:48:03ハードタブ8タブ派に、おれの好みのインデントを押し付けるため。
はっはっは苦しめい!
0990デフォルトの名無しさん
2007/02/04(日) 19:04:252chへの書き込みには空白2文字。
>989
それくらいエディタで置き換えればどうにでもなる。
0991デフォルトの名無しさん
2007/02/04(日) 19:19:38全角空白使えや
0992デフォルトの名無しさん
2007/02/04(日) 19:37:16理由は視線の移動が少なくて読むのに楽だから。
たとえ視界に入っていても、ものをはっきり認識できる領域ってのは限られてる。
そのためタブが大きいと視線の移動も大きくなり、目の負担が増大する。
8文字派の気が知れんよ。
せいぜい眼球を無駄に動かして疲れてください。
0993デフォルトの名無しさん
2007/02/04(日) 21:33:32今やってるC言語の仕事は8タブで横80カラムのコーディング規約なんだが、冗談はよせと思ってる
識別子の長さが最大6文字の時代ならそれでもいいがw
0994デフォルトの名無しさん
2007/02/04(日) 21:35:41「インデント幅なぞどれでも良い」と判断出来るような
関数/メソッドにするべきでは?
と言ったら嵐になってしまう?
0995デフォルトの名無しさん
2007/02/04(日) 23:29:17コーディング規約 第3条
http://pc10.2ch.net/test/read.cgi/tech/1170599322/
0996デフォルトの名無しさん
2007/02/05(月) 00:16:04すまんが、なにを言っているのかわからない
0997デフォルトの名無しさん
2007/02/05(月) 03:27:16きれいなソースにするという事では
0998デフォルトの名無しさん
2007/02/05(月) 08:47:330999デフォルトの名無しさん
2007/02/05(月) 11:32:10,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!! ,,、,、,,,
/三√ ゚Д゚) / \____________ ,,、,、,,,
/三/| ゚U゚|\ ,,、,、,,, ,,、,、,,,
,,、,、,,, U (:::::::::::) ,,、,、,,, \オーーーーーーーッ!!/
//三/|三|\ ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
∪ ∪ ( ) ( ) ( ) )
,,、,、,,, ,,、,、,,, ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
,,、,、,,, ( ) ( ) ( ) ( )
1000デフォルトの名無しさん
2007/02/05(月) 11:34:2010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。