PG_kura PG_kura 2012-08-17 23:46:59

[C] switch-caseは現場の臭いがする このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

"とりあえず"で書いた 2010 年 4 月。
これくらいは許容範囲だと思った 翌 5 月。
気になってるんだけど直すスキルが無い 7 月。
何かを諦めた 12 月。

そして時は流れ... 2011 年、暮れ。 誰かが冗談で書き添えた else 節。

// switch-case にしたいが、関数で値を取得しないといけないため、
// やむを得ず if-else を使うことにする。(2010/12/15 課長承認)

if(flag == get_flag_2010_04()) {
  write_data(2010, 4);

} else if(flag == get_flag_2010_05()) {
  write_data(2010, 5);

} else if(flag == get_flag_2010_07()) {
  write_data(2010, 7);

} else if(flag == get_flag_2010_12()) {
  write_data(2010, 12);

} else if(flag == get_flag_2011_01()) {
  write_data(2011, 1);

} else if(flag == get_flag_2011_05()) {
  write_data(2011, 5);

} else if(flag == get_flag_2011_09()) {
  write_data(2011, 9);

} else if(flag == get_flag_2011_12()) {
  write_data(2011, 12);

} else if(flag == get_flag_2012_05()) {
  write_data(2012, 5);

} else {
  //       √ ̄ヽ--ヘ    O―~,
  //      /    ☆ ヽ   ||    |
  //      0く━=ニニ二>   ||―~'
  //     //(●)  (●) \
  //    / ヘ  (__人__)    |
  //   /ヽノ彡,,..  .|∪|   /     後は頼んだ!
  //  /  丿,,  /\ヽノ/ゝ 丶
  // (       ̄jヽ,/_l   ヽ
  //  \     ____ ̄{。 _____ }
  //   ヽ、,,_,  {---} }。 {---} j
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(19)

#1 math_neko math_neko 2012-08-17 23:39:31  

どうしてこうなった

#2 HarpoonArrow HarpoonArrow 2012-08-18 00:00:41  

get_flag_〇〇関数を都度書き足しているあたりがうーん、この香り…

#3 radicalxxx radicalxxx 2012-08-18 00:33:29  

forを使って欲しい

#4 takhamm takhamm 2012-08-18 01:22:56  

関数ポインタの配列使ってwhileで回せばいいんじゃね?

#7 mather314 mather314 2012-08-18 02:32:41  

get_flag_YYYY_MM()の中身が気になりますよねぇ…。各フラグが排他的ってわかってるならまとめられるだろうに。

#9 InternalServerE InternalServerE 2012-08-18 03:27:59  

単に処理をループにするだけってのは、ウンコの色や臭いが変わるだけで、ウンコであることには変わらない。mather314さんのいう通り、根本の解決を考えないと。

#10 momimist momimist 2012-08-18 05:25:17  

月が増える度にプログラムを書き足す必要があるだと・・・

#12 mnzktw mnzktw 2012-08-18 09:14:20  

write_data() も flag関数の中で呼んじゃえばいいような。

#13 ItSANgo ItSANgo 2012-08-19 13:53:20  

get_flag_YYYY_MM()関数の設計が諸悪の根源だよなぁ。都度アドホックに仕様が決まっていく世界なんだろうか…。

#14 dao_tq dao_tq 2012-08-19 22:15:12  

"とりあえず"で書かれたり、これくらいは許容範囲だと思ってそのままにされたりすると、引き継ぐ側が被害を受けますね。

#15 kkmym kkmym 2012-08-19 22:31:13  

課長あきらめたのかな。

#16 HiroakiSoftware HiroakiSoftware 2012-08-19 23:02:33  

elseのコメントwwww

#18 aves_ramphastos aves_ramphastos 2013-03-15 13:25:32  

変数の値を変更するためget_flag_YYY_MM関数を追加→関数を呼ぶウンコードを積み増し……な話? 「過去のコードを消してはならない」ルールもあるかも。

#19 xxxDATxxx xxxDATxxx 2013-03-15 16:50:15  

課長が気になります

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[C] すげーちゃんと動く!

このエントリーをはてなブックマークに追加

結合試験2日前に脱退したうんkプログラマ...

return 0;

鑑賞する »

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[C] NULL と 8 の何故

このエントリーをはてなブックマークに追加

テストは通ってるけど、教科書からやり直し...

#define TO_STRING(n, str) \
  if(n != N...

鑑賞する »