- PR -

プログラムの書き方でご指導お願いします。

投稿者投稿内容
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-11-09 17:48
がるです。

引用:

tarnwoさんの書き込み (2005-11-09 17:19) より:
引用:

ただ、悩むというからには上述でも気になる点がありまして。
それは「ステータスの表記をどのようにしてその定数をどこに持つか」
っていう話になるです。


私は定義用のインタフェースを用意しています。
定義方法については、大項目、中項目、小項目、(+詳細項目)であったり
全て1定義1ステータスコードのように定義したり。
どちらも一長一短ですね。


難しいですよね(苦笑
しばらくWeb系にどっぷりなせいか、3桁のエラーコード体系が
割合に肌になじんではいるのですが。
業務によっては「それでは到底どうにもならない」ケースもあって(苦笑

引用:

すいません、イマイチ意味が・・・。
「定数の書き間違い」(手打ち?)のエラーはコンパイルレベルで普通に見つかると思いますが・・・(^^;


あ、失礼をば。
enumとかで普通に列挙してくれると楽なのですが、時々定数を
そのまんま文字列で打ち込まれるケースとかがあって(苦笑
# ……ええありましたともさつい最近。

ちょっと近日のトラウマがあったので、言葉足らずでした。


で。
引用:

未記入さんの書き込み (2005-11-09 17:26) より:
仕様変更後
 is_true()
  true: 承認されている
  false: 判定不能。さらに is_wait() で状態を確認する必要がある
 is_false()
  true: 承認されていない
  false: 判定不能。さらに is_wait() で状態を確認する必要ががる

ということになりますね。


なりません。
文章読解能力と、それ以上に「[常識|思い込み|偏見]を拭い去る力」
を磨きましょう。

引用:

あなたの考える is_wait() 建て増しは害悪しかないように思えます。


この部分からもおおよそ想定できるのですが。
# 別に私が建て増しを考えているわけではありません。
# 「だれが」という質問に解答するつもりなどもはやありませんが。

今までの未記入氏の発言を拝見している限り、自らの中にある
[常識|思い込み|偏見]というフィルターを通してこちらの意見を
読み、しかる後にそのフィルター越しに返答をされています。

議論は双方が「冷静に相手の発言を理解し、必要に応じて"理解
するために必要な質問"を織り交ぜつつ」行うものです。
然るに、未記入氏はそのような行為をせずに自らの[常識|思い込み|偏見]
を基準に勝手な憶測をし、或いは補完をし、そこからよくわからない
発言を繰り返されています。

時々「使えないSE」の間にもこういったタイプを散見しますが。

以前も少なからず感じておりましたが、明らかに議論をするに
足るとは判断しがたいことがわかりました。
出来れば「これを読んだほかの方が後日にでも参考になれば」
と思いある程度続けてきましたが、このようなおかしな会話は
かえって混乱を招くばかりであると判断いたします。

よって、未記入氏への私からのレスは、これをもって終了させて
いただきます。

なお「どの辺がおかしいんだろう」という疑問を持たれた方は、
どうかお気軽にがる宛てにプライベートメッセージなど頂戴できれば、
可能な限りお答えさせていただきます。

以上。
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-11-09 18:06
引用:
なりません。


なりませんとは? is_true() の仕様変更にはなりません、という意味ですか。ついに発言自体が論理破綻してしまいましたね。

「ちょっとまった」導入の前は(例外が発生していない正常系において) is_true() と is_false() は背反な関係にあったはずです。(このふたつのメソッドが同じ値を返すことは当初考えられていません。)

「当初から同じ値を返す可能性を考慮していた。だから is_true() と is_false() ふたつのメソッドがある」とか言い出しそうですね。先に書いておきますが、もしそのような状態を初期段階で想定しているのであれば、あなたが書いた次のコードは誤りになります。

コード:
if (cobj.is_true()) {
    // 承認OK
  } else {
    // 承認NG
  }



もし、is_true() と is_false() が背反でないとはじめから想定しているなら、次のように書かなければならなかったはずです。

コード:
if(cobj.is_true()) {
    // 承認OK
  } else if(cobj.is_false()) {
    // 承認NG
  } else {
    // 現時点ではここには到達しない
  }



なぜ、はじめのコードでは is_false() をチェックせずに「認証NG」というフローに流れているのですか? これは is_true() と is_false() が背反だという性質を利用しているからではないですか?

引用:
別に私が建て増しを考えているわけではありません。


「では改修パターンを。ステータスに「ちょっとまて(wait)」が混入したとします。」と自信を持って例示されたように感じていましたけど、だれかの失敗例を持ち出しただけなんですか? その失敗例を前面に押し出して、(反面教師としてではなく)何を主張しようとしていたのでしょう?

もしかして、都合が悪くなったら「私ではありません」ですか?

挙句の果てに、自分の理論を理解してもらえないと「相手が冷静でない」「偏見」「思い込み」ですか。自分の論理が破綻している可能性というのは眼中にないようですね。それもひとつの「思い込み」ではないかと思いますけど。

引用:
明らかに議論をするに足るとは判断しがたいことがわかりました。


議論にすらならなかったのは事実ですが、それは私の偏見によるものではなく、あなたの破綻した論理によるものだと認識しております。

お疲れ様でした。
ゆっきー
会議室デビュー日: 2005/09/21
投稿数: 10
投稿日時: 2005-11-09 18:11
さき程から見させていただいていました。
私的にはがるがるさんも未記入さんも同じことを言っているように思えました。
相違点は以下のように受け取りました。
【未記入さんの場合】最初にTARGETを宣言しておいて警告を受ける
【がるがるさんの場合】if〜else if〜の最後に「// ありえないしここに入るのは」として警告を促す

なぜなら極端な話
「switch文はコンパイラーを通すとifに置き換わる」
と聞いたことがあるからです。

的はずれでしょうか?


がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-11-09 18:30
どもです。がるです。
引用:

ゆっきーさんの書き込み (2005-11-09 18:11) より:
さき程から見させていただいていました。
私的にはがるがるさんも未記入さんも同じことを言っているように思えました。
相違点は以下のように受け取りました。
【未記入さんの場合】最初にTARGETを宣言しておいて警告を受ける
【がるがるさんの場合】if〜else if〜の最後に「// ありえないしここに入るのは」として警告を促す


んっと。ゆっきーさんが書かれている部分については
概ねその通りかと。
ほかの部分への言及は避けますが。

引用:

なぜなら極端な話
「switch文はコンパイラーを通すとifに置き換わる」
と聞いたことがあるからです。
的はずれでしょうか?


コンパイラを持ち出す以上、その先は「マシン語」になるかと
思われるのですが。
その場合「switch文はコンパイラーを通すとifに置き換わる」
は正しいです、多分。
多分というのは、私が知っているマシン語(アセンブラ)の
限りにおいてはswitchなどという便利な命令セットは存在
していなかったので。
ただ、マシン語(というかアセンブラ)でコーディング
しまくっていたのは随分と昔なので。
# いわゆる8bitCUPとかそーゆー時代です(苦笑

昨今の32bit CPUの命令セットを知らないので、或いは
switch命令セットなどというものがあるのかもしれない
です。

以上、簡単ですが。
masa
大ベテラン
会議室デビュー日: 2005/05/11
投稿数: 108
投稿日時: 2005-11-09 19:11
引用:

ゆっきーさんの書き込み (2005-11-09 18:11) より:
なぜなら極端な話
「switch文はコンパイラーを通すとifに置き換わる」
と聞いたことがあるからです。

的はずれでしょうか?


的はずれな気がします。
未記入 さんの意見は、要件的にboolean型の戻り値がふさわしくないならば、
Enum 列挙型の使用をオススメします。であって、
switchがどうとか、ifがどうとか が本質ではないでしょう。
少なくともJavaにおけるプログラミングで、議論にあがっているような仕様
変更が発生した場合の対応は、未記入 さんの意見が正道(正解とは言いません)
だと私は思います。
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2005-11-09 20:36
こんばんは。

話が脱線してしまいますが、スイマセン。
部分的反応です。

引用:

がるがるさんの書き込み (2005-11-09 18:30) より:
引用:

なぜなら極端な話
「switch文はコンパイラーを通すとifに置き換わる」
と聞いたことがあるからです。
的はずれでしょうか?


コンパイラを持ち出す以上、その先は「マシン語」になるかと
思われるのですが。
その場合「switch文はコンパイラーを通すとifに置き換わる」
は正しいです、多分。
多分というのは、私が知っているマシン語(アセンブラ)の
限りにおいてはswitchなどという便利な命令セットは存在
していなかったので。
ただ、マシン語(というかアセンブラ)でコーディング
しまくっていたのは随分と昔なので。
# いわゆる8bitCUPとかそーゆー時代です(苦笑

昨今の32bit CPUの命令セットを知らないので、或いは
switch命令セットなどというものがあるのかもしれない
です。



Javaのバイトコードレベルではどうかは知りませんが、
マシン語(アセンブラ)レベルでは、if文もswitch文にも該当する命令はないでしょう。
#私の知っている限りのCPUでは。
かわりに「条件付ジャンプ命令」によって処理の分岐がおこなわれます。
比較命令などを行った後、フラグレジスタの内容をみてジャンプを行うわけです。

マシン語(アセンブラ)でswitch命令があったら、可変長のオペランドが必要になってしまいませんか?
そんなCPUって設計できるのかな?

昨今の32bitCPUなどでは、MMU(メモリ管理ユニット)などの命令が追加されていますね。
がるがる
ぬし
会議室デビュー日: 2002/04/12
投稿数: 873
投稿日時: 2005-11-09 21:02
どもですがるです。
ちと脱線へのレスで恐縮ですが。

引用:

Tdnr_Symさんの書き込み (2005-11-09 20:36) より:
Javaのバイトコードレベルではどうかは知りませんが、
マシン語(アセンブラ)レベルでは、if文もswitch文にも該当する命令はないでしょう。
#私の知っている限りのCPUでは。
かわりに「条件付ジャンプ命令」によって処理の分岐がおこなわれます。
比較命令などを行った後、フラグレジスタの内容をみてジャンプを行うわけです。


むぅ失礼をば。その「条件付ジャンプ命令」をさしてif文って
言ってます(苦笑
昔(Z80a)はアキュムレータに対して演算して0だったら
ジャンプとか(JPZ)そういうのでif文実装してたですよねぇ(遠い目
# ほかにもいくつかあったような気がしたけど…忘れた(笑

引用:

マシン語(アセンブラ)でswitch命令があったら、可変長のオペランドが必要になってしまいませんか?
そんなCPUって設計できるのかな?


そっか、そうですねぇ。それを考えると限りなく無理に近いのかな?
無理やり実装すると仮定すると…
LD IX, てけとうなアドレス
LD IY, てけとうなアドレス2
LD (IX), 0x01
LD (IY), てけとうなオペランド1
LD (IX+1), 0x10
LD (IY+1), てけとうなオペランド2
LD (IX+2), 0x20
LD (IY+2), てけとうなオペランド3
SWT IX, IY, 0x3
とかって感じにして「IXからスタートして3つあるからそれぞれ
比較して一致したら対応するIYのラベルにジャンプ」とか。
……我ながら汚くて惨い実装だ ;;
# 多分最近のマシン語だともうちょっときれいにいくんだろうなぁ
# とか色々思いつつ。

引用:

昨今の32bitCPUなどでは、MMU(メモリ管理ユニット)などの命令が追加されていますね。


んむぅこの辺はぜんぜん知らなかったです。

以上、余談でした。
ブンデス
常連さん
会議室デビュー日: 2005/10/14
投稿数: 22
投稿日時: 2005-11-09 22:06
未記入の勝ち
がるがるの負け

ということで、皆様OKですか?

スキルアップ/キャリアアップ(JOB@IT)