- - PR -
差を算出する、あるいはソースとデスティネーションがある場合、メソッド引数の順序は?
投票結果総投票数:19 | |||
---|---|---|---|
昨日、今日 / src、dst | 7票 | 36.84% | |
昨日、今日 / dst、src | 1票 | 5.26% | |
今日、昨日 / src、dst | 11票 | 57.89% | |
今日、昨日 / dst、src | 0票 | 0.00% | |
|
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-03-28 02:01
コーディング規約に近い話題になります。
2つの日時の差を算出するメソッドや、あるいはコピーのようにソースとデスティネーションを持つメソッドの場合、引数が2つありますが、その順序はどう統一すれば良いでしょうか? (とくに言語を問わないのですが、私個人的には最近 C# を使っているので、この会議室(Insider.NET)に投稿しています。) 差をとるメソッドだと、たとえば、 DateDiff(昨日, 今日) = +1日間 か? それとも、 DateDiff(今日, 昨日) = +1日間 (すなわち、DateDiff(昨日, 今日) = -1日間) か?で悩みます。 後者だと、 今日 - 昨日 = +1日間 という差演算と同じ順序で扱えます。 コピーは、 Copy(source, destination) か? それとも、 Copy(destination, source) か? どっちでもいいと言えばそうなのですが、どっちか決めがほしいものです。 | ||||
|
投稿日時: 2008-03-28 08:06
.NET の標準ライブラリは (src, dst) になっていますね。
また op_Subtruct も minuend - subtrahend は (minuend, subtrahend) です。 | ||||
|
投稿日時: 2008-03-28 08:29
こんちは
2番を選択しました。 日付関係は From To の順序で呼ぶようにしてます。 というか設問が昨日、今日という表現で曖昧です。 左側に基準となる日にちをおくようにしてます。 DiffDate(昨日, 今日)の場合昨日を基準にして+1日 DiffDate(今日, 昨日)の場合今日を基準にして−1日 Copyはそのレベルによりますが、低レベルな呼び出し(文字列のコピーなど)は Destination, Source の順序にしています。 アセンブラが opecode destination, source なのでその影響を受けてます。 高レベルの呼び出し(ファイルのコピー、ディレクトリのコピーなど)は Source, Destination の順序にしています。 シェルの呼び出しに影響されてます。 WindowsAPIだと似たようなAPIで引数が逆のものとかあって困りますよね? GetCurrentDirectory(nBuffLen, lpBuff) GetSystemDirectory(lpBuff, nBuffLen) まぁ通常はコンパイル時にエラーになるから問題ないけど... | ||||
|
投稿日時: 2008-03-28 09:09
例題でいうとDiffDate(今日, 昨日)かなぁ。
分け方として、 Copy A To B Rewrite B By A とか英文にあわせるとか。 | ||||
|
投稿日時: 2008-03-28 09:21
3番に投票しました。
DateDiffはちょうど同名の関数がVBにありますが、 新しい日付, 古い日付 の場合に 正の数を返すという形になっています。 減算と同じ構成でわかりやすいと思います。 SourceとDestinationの場合は、SourceからDestinationへという意味合いで、この順番にします。 私の場合はWindowsAPIのBitBltの影響を受けているだけかもしれません。 | ||||
|
投稿日時: 2008-03-28 09:34
あまり気にしたことはないですが
私的には(1)ですかね いろいろなコンピュータ文化(源流)によって 変わってきてますね。 ただ、ちょっと見た限りではDateDiffにsrc/dstみたいな関係は 無いような気がします。 しいて言えば基準日と比較対象では? | ||||
|
投稿日時: 2008-03-28 10:11
私も 3 ですね。
減算が目的なら (大きい値, 小さい値) が直感的だと思います。 ただし AddMonth メソッドのように基準から正負の数をどうこうするメソッドの場合は (基準, 足しこむ値) という順番になります。 Source と Destination なら (Source, Destination) 以外はもう気持ち悪くて無理です。 元 >> 目的先 と矢印は常に右向きにしたいわけです。 判断に困る時は NCL に合わせることにしています。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2008-03-28 10:51
DiffDate(A, B) というのは、Aという日付をBという日付にするために必要な差分を算出するためのメソッドだと思います。
なのでAを基準としてB-Aを結果として返す、という意見に賛成です。 もっとも、diffコマンドの説明からそう連想しただけだったりしますが。 http://docs.sun.com/app/docs/doc/816-5165/diff-1?l=ja&a=view
|