この会社辞めようと思ったソースコード #6

このエントリーをはてなブックマークに追加
952仕様書無しさん:02/11/08 23:48
>>950
あ、1 に 「質問する前に Web で検索しろ」 って書いといて。
あと 「丸投げ/宿題おとこわり」
953仕様書無しさん:02/11/09 00:00
>>950
割り算はコストが高い(高クロック消費)って言うのを聞きかじって
そうしたのかな?
こーゆう全体を見た結果なのか、思いつき思い込みでこうなってるのか
分からないプロが一番嫌だね。
954仕様書無しさん:02/11/09 00:01
コンパイラ作る立場として
糞ソースは参考になるよ
955仕様書無しさん:02/11/09 00:05
>>953
わり算がイヤなら変数を用意するかなぁ。
956仕様書無しさん:02/11/09 00:11
エラー処理って、きっちり分かってる人は少ないよな。
(俺もえらそうなことはいえない)

エラーの種類分け
 ・プログラムエラー
 ・実行時例外
 ・システム例外
対応方針
 ・発生しないようにプログラムコードを書く
 ・発生した場合に、実行停止しないように続行するよう記述する
 ・発生した場合に、実行を即時停止する
 ・安全な方に回避する
対応方法
 ・エラーメッセージをそのまま出力する
 ・ユーザーには詳細を見せない(管理者のみ見られるようにする)
 ・ユーザーに詳細を見せる
 ・フラットファイルに出力する
 ・データベースに出力する

たかだか3種類の軸を設定しても、いくらでも選択肢を想定できる。
すべてのシチュエーションを完璧にカバーするのは難しい、っつーか無理に近い。

でも、「見えないようにするのがエラー処理」と考えている奴が多いのも確か。
エラーを見せるのも立派なエラー処理なのに。
957 :02/11/09 00:22
CS(Computer Science)のMSだったらな・・
958仕様書無しさん:02/11/09 00:39
>>956
プログラムエラーと実行時例外はどう違いますか?
959仕様書無しさん:02/11/09 00:52
プログラムエラーって普通、論理エラーの事を指さないか?
ユーザーエラーでもないしな。
960すぷーん ◆spoonLv.3M :02/11/09 01:01
>>956
まぁ同意なんだが、エラーを出さないのも同じように重要かと。
いちいちダイアログが出るのは正直ウザイ。

メカ系ではメカストップが付いてるので、いちいちエラー処理を書かないこともある。
未だにエラー処理は悩むので、コーディング規約よりエラー規約を
プログラマレベルで統一するのも意味あるかもです。

ま、無理だろうけど。
961仕様書無しさん:02/11/09 01:01
>>956
何かの本(UMLモデリングのエッセンスだったかな?)で、

「例外とは事前条件が満たされているのに、
事後条件を満たすことができなかった場合である」

と書いてあるのを呼んだ覚えがあります。
しかし、その中の実行時例外とシステム例外に、
どのような違いがあるか分からないので教えていただけませんか?
もしくは出典を・・・
962958:02/11/09 01:03
1+1と入力して3がでる、という類のものがプログラムエラー?
バグ?
どうやって、実行時にみつけるの?
963958:02/11/09 01:06
>>960
「規約」ではなくて「仕様」にするべきと思われ。
964920:02/11/09 01:09
あんまエラーの分類については意識したことないんだが、O除算エラーや、
short×short=shortでオーバーフローとかはどれなんだ?

malloc失敗とか、ファイルオープン失敗は実行時エラーなのか?
965すぷーん ◆spoonLv.3M :02/11/09 01:10
>>963
「仕様」では当たり前すぎるような気がする。
○○という場合には△△といったテンプレートのような存在が出来ればいいなぁ、と。


これって「仕様」じゃないよね。
966仕様書無しさん:02/11/09 01:11
ユーザーエラーとかシステムエラーとか論理エラーとかいろいろあるけど
どれがどれに当てはまるのか良く分からない。
まあ、完全にわからないというわけでもないんだがこれらの違いによって
書くエラー処理の方法が変わる気がしない。
エラーは全部throwで例外を発生させればいいんじゃないかと思う。
967仕様書無しさん:02/11/09 01:12
まぁまぁ、エラーもバグもどっちが出たって
上から怒られんだから、どっちでも大差ないって
968920:02/11/09 01:14
>>966
漏れは、例えば数字入力するエディットボックスで、英文字キー押した途端、
例外発生して終了するようなソフトは使いたくないぞ。
969仕様書無しさん:02/11/09 01:15
>>967
ユーザーエラーは上から怒られない。発生しないに越したことはないが
発生するのは避けられないからその時どうするかというのは重要。
というか話に参加しないならでてくんな。
970958:02/11/09 01:16
>>965
>○○という場合には△△といったテンプレートのような存在が出来ればいいなぁ、と。
それなら設計段階の規約で、プログラマで統一するものではないような。

>>967
仕様としてエラーをだすなら怒られないよ。
971仕様書無しさん:02/11/09 01:19
>>968
トラップすれば良い。
内部でバグが発生した場合、例外発生して終了するだけじゃ問題解決の手がかりが残らない。
メッセージを表示するとかログを取るとかするはず。
だから最終的にはすべてのエラーはトラップされるのが良いと思う。
そのエラーのトラップの処理で十分吸収できると思うけど。
972971:02/11/09 01:20
あれ? トラップという言い方はおかしいのかな? キャッチと言った方が良いのかな?
973920:02/11/09 01:27
>>971
ネタか? キー入力ならisdigit(c)とかマスク処理するやろ。 何でも
かんでも例外をスローされたら堪らんぞ。
974仕様書無しさん:02/11/09 01:34
>>973
当然だわな。そのルーチン内でハンドリングできないようなエラーなら、
上に例外をthrowするしかないだろうけど。
975956:02/11/09 01:38
きちっとした、こうやるとよいぞっていうドキュメントは見たことが無い。
自分で考えても、なんかびしっと決まらない。
要件が場合によってばらばらだから、一般化しにくいものなのかもしれない。

そんな中で、この文書は「一般論として」よくまとまっていると思う。
 EJB例外処理のベスト・プラクティス(developerWorks)
   http://www-6.ibm.com/jp/developerworks/java/020802/j_j-ejbexcept.html

976920:02/11/09 01:39
>>974
言語処理系にもよるけど、プログラム全体の処理に関わるエラーはスロー
するけど、関数の呼び出し元で結果判断できるようなエラーは戻り値で
返すようにしない?
977参考:02/11/09 01:58
978仕様書無しさん:02/11/09 02:17
エラー処理については以下が基本。
1)エラーの捕捉は捕捉が可能な箇所で(通常は低レベルな層)
2)エラーの処理(判断)は、より判断材料が揃っている高レベルな層で

エラー処理の面倒さというのは、以下のような点にあるように思う。
・上記の二条件を満たそうとすると、必然的にエラーの上層への
 伝播が必要となる。言語レベルで例外機構をサポートしているならば
 これはさほど問題ではないが、Cのようにそれをサポートしない言語や
 C++のように例外が後付けで導入されたため、例外に関する仕様その他が
 腐っている言語もある。
・高レベルな層がエラーに(親切に)対応するには
 -どのようなケースでどんなエラーが発生する可能性があるか
 -それは回復可能なエラーか。どのような回復手段が望ましいか
 といった点を考慮する必要が有る。
これには低位な層の実装への知識や上層・下層間のかなり緊密な連携が
しばしば必要になるが、云うまでもなくカプセル化の概念には真っ向から
反する。

現実世界のアナロジーで考えれば、上司への報告は、階層を経る毎に
抽象度や粒度が変化するであろう。取りあえずthrowすれ、という
中間管理職は有能とは見なされない。
# が、各層で一々エラー処理をやるのはやっぱり面倒....
979仕様書無しさん:02/11/09 02:46
978 にはおおむね疑問だが、

>          言語レベルで例外機構をサポートしているならば
> これはさほど問題ではないが、Cのようにそれをサポートしない言語や
> C++のように例外が後付けで導入されたため、例外に関する仕様その他が
> 腐っている言語もある。

これには疑問だな。
直ちに適切なエラーコードを return すればいいだけだ。
それとも、戻り値をチェックするのに不満があるのか?

例外が使えるとスッキリ書けるのは確かだけど。
980仕様書無しさん:02/11/09 02:55
漏れのホスト、スレ立てられない。
981 の人頼む。
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
この会社辞めようと思ったソースコード。
プログラマとして幻滅するソースコード。
プログラマを悩ませるソースコード。
COBOL ライクなソースコード。(゚д゚)マズー
をつらつらと綴っていって頂戴。

質問する前に Web で検索してね。
あと、丸投げ/宿題おとこわり。

■過去スレ
この会社辞めようと思ったソースコード
#1http://mentai.2ch.net/prog/kako/997/997104873.html
#2http://pc.2ch.net/prog/kako/1001/10010/1001076034.html
#3http://pc.2ch.net/prog/kako/1015/10158/1015861447.html
#4http://pc.2ch.net/test/read.cgi/prog/1021560641/
#5http://pc.2ch.net/test/read.cgi/prog/1029120005/
#6http://pc.2ch.net/test/read.cgi/prog/1033317733/

■関連スレ
この会社辞めようと思った上司の一言
#1http://mentai.2ch.net/prog/kako/992/992259973.html
#2http://pc.2ch.net/prog/kako/1003/10034/1003497181.html
#3http://pc.2ch.net/test/read.cgi/prog/1024763650/
#4http://pc.2ch.net/test/read.cgi/prog/1034469344/
この会社を辞めよーかなーなんて思った上司の一言
#5http://pc.2ch.net/test/read.cgi/prog/1036592708/
981ななし:02/11/09 02:58
>直ちに適切なエラーコードを return すればいいだけだ。
戻り値の取りうる値がすべて正常値のときはどうすればいい?
int div(int a,int b){ return a / b;}
なんかは。

>それとも、戻り値をチェックするのに不満があるのか?
ある。
めんどくさい。
982仕様書無しさん:02/11/09 03:03
>>981
次スレ。

> int div(int a,int b){ return a / b;}
戻り値の取りうる値がすべて正常値の関数は普通、絶対にエラーが無いか、書かない。

> めんどくさい。
まあ同意するけど、仕事でやる時にまでブーブー文句言う程ではない。
983リアル厨房:02/11/09 03:18
そうか、戻り値ありの関数にはエラーコードを返させれば
良かったんだ。何も知らなかった。
今までは、エラー検出時にはソフトウェアリセットの操作bitを
叩いて自爆するように組んできたんだけど、少しは考えるか。
Device設計するハード屋には必ずソフトリセット機能による
完全復帰を要求してるし。
984仕様書無しさん:02/11/09 03:19
985仕様書無しさん:02/11/09 03:20
>>984
986984:02/11/09 03:23
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 1000取りたい!
\________ _______
                  |/
             ∧,,∧∩
          目ミ ゚Д゚ ミ
            || (ミ  ミ
          ||  ミ  ミ〜
           ||  ∪ ∪
987仕様書無しさん:02/11/09 03:25
        まもなくここは 乂1000取り合戦場乂 となります。

      \∧_ヘ     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ,,、,、,,, / \〇ノゝ∩ < 1000取り合戦、いくぞゴルァ!!       ,,、,、,,,
    /三√ ゚Д゚) /   \____________  ,,、,、,,,
     /三/| ゚U゚|\      ,,、,、,,,                       ,,、,、,,,
 ,,、,、,,, U (:::::::::::)  ,,、,、,,,         \オーーーーーーーッ!!/
      //三/|三|\     ∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ∪  ∪       (    )    (     )   (    )    )
 ,,、,、,,,       ,,、,、,,,  ∧_∧∧_∧∧_∧ ∧_∧∧_∧∧_∧∧_∧
      ,,、,、,,,       (    )    (    )    (    )    (    )

http://big.freett.com/scheme_a/num1000.swf
988リアル厨房:02/11/09 03:26
>983
デバッグ初期のボードなんか、意味も無く初期リセットを繰り返すので、
LEDが全点灯/消灯を繰り返すもんで、美しいぞ。
バグったって分かり易いだろう!
989984:02/11/09 03:26
今だ! 1000ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
990仕様書無しさん:02/11/09 03:44
今だ! 3ゲットォォォォ!!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚Д゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
991仕様書無しさん:02/11/09 03:46
          アヒャーー
      ∧∧
     (゚∀゚ )⌒ヽ ≡≡ = = -
    ,.、,,U‐U^(,,⊃_       /i ≡≡≡ = = -
   ;'゚∀゚ 、、:、.:、:, :,.: ::`゙:.:゙:`''':,'.´ -‐i = ≡≡≡ = = -
    '、;: ...: ,:. :.、.:',.: .:: _;.;;..; :..‐'゙  ̄  ̄
     `" ◎ ''`゙ ◎ ´´   - = ≡ = = -
992仕様書無しさん:02/11/09 03:47
  アヒャーー
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄       (´´
     ∧∧   )      (´⌒(´
  ⊂(゚∀゚⊂⌒`つ≡≡≡(´⌒;;;≡≡≡
        ̄ ̄  (´⌒(´⌒;;
      ズザーーーーーッ
993仕様書無しさん:02/11/09 04:02
    (⌒, -- 、⌒)     / ̄ ̄ ̄ ̄
  _  Y      Y  _ < 1000getレースですか?
 ミ \| ・  . ・| / 彡 \____
    @ゝ.  ^  ノ@
994仕様書無しさん:02/11/09 04:03
                /)
             、2)Y⌒  ⌒フ   +
           ッ-i'´       ⌒フ
           (´ ,.-゙ー-、     ろ、
        * シ彡ノ"ミVv    )
      *    ノノノノ"ヽヽヽミ   シ  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
.          ,l')∩  ∩ |)|ヾ ミ  < 1000!!
           ,○)、 ▽  ノjl| YY゙    \_______________
           {_∃ `l____/⌒'i|           
            ̄ Yl"゙⌒lY |  +
              ,ト|__/ハ i、           
           ,iニiニiニユ ゙h,,)
           ノtYTYヾ\
          /''フ''''ー<"ヽ、
           /__ノ     \ノヽ、
          (__)     ゞ__)
995仕様書無しさん:02/11/09 04:04
。1000取り合戦に遅れちゃうよ〜〜〜
。   ∧_∧。゚
 ゚  (゚ ´Д`゚ )っ゚
  (つ   /  アァァァァ
    |  (⌒)
   し⌒^
996仕様書無しさん:02/11/09 04:06
1000!!!
997仕様書無しさん:02/11/09 04:06
  _∧ ∧ ∧  ワーイ          _∧ ∧ ∧  マテー
 (_・ | (・∀・)            (_・ | (´∀`) 
   | Ю⊂)_√ヽ            | Ю⊂)_√ヽ   
   (  ̄ ∪ )^)ノ           (  ̄ ∪ )^)ノ
    || || ̄|| || ≡≡≡≡        || || ̄|| || ≡≡≡≡ 
    || ||  || || パカッパカッ      || ||  || || パカッパカッ
998仕様書無しさん:02/11/09 04:07
1000!!!
GETTTTOOOOOoooo...
999仕様書無しさん:02/11/09 04:07
1000
1000仕様書無しさん:02/11/09 04:07
                    /:|.             /:|
                   / .:::|            /  ::|
                  |  ...:::|_          /   :::|
                 i       ̄ ̄⌒゙゙^――/   ::::::|
                /                  :::::::::\
                /|・\           ./・>    :::::::::\
               /ミ\ \         / /彡 i し./:::::::\
               /  ミ\.\ヽ|||liiiii||/ /./彡   ノ (::::::::::::::::::\
              /    ミ\\|||iii||l//彡     '~ヽ  :::::::::::::::\
             /        ̄    ̄,,、          /:::::::::::::::::.\
..  ガ━━━━━/  \ /  ,,____ _,/ ̄ \ \    /::::::::::::::::::::::::::::\━━━━━ソ!!!!!
           \    |.. | /└└└└\../\    /:::::::::::::::::::::::::::::::::/
             \    ∨.|lllllllllllllllllllllllllllllllllllllllll|  /::::::::::::::::::::::::::::::::::/
              \   |.|llllllllllll;/⌒/⌒   |    ::::::::::::::::::::::::/ 
                \ |.|lllllllll;   ./ .   . |    :::::::::::::::::::/
                /  |.|llllll|′  /    . |    | ::::::::/|
                /  |.|llll|    |     .∧〔   / ::::::::::::::::\
              / }.∧lll    |    ../ /  /   :::::::::::::::::\
             /   /| \┌┌┌┌┌/./ /:::      :::::::::::::::::\
           /    ( ゙゙^^¨^¨゙゙¨  ̄ ̄ ̄ /:::::::::::         ::::::::::\
          /     ヽー─¬ー〜ー――― :::::::::::::
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。