RSS

 

RSS


プ:関数名は適切なものを

  • いわいまさか
  • at 2008/12/25 12:43:19

 C等でプログラミングするとき、関数名は適切なものをつけるのがよい。当然のことなのだが、実例で説明。

 自分が昔書いたソース。
  描画するクラスのprivateの関数群がこんな感じのラインナップ

class 描画 {
//省略
 void Draw_L0_00(const OMC_BAN_5xTxY *bans) ; 
 void Draw_L0_01(const OMC_BAN_5xTxY *bans) ; 
 void Draw_L1_07(const OMC_BAN_5xTxY *bans) const; 
 void Draw_L3_02(const OMC_BAN_5xTxY *bans) const;
 void Draw_L3_03(const OMC_BAN_5xTxY *bans) const;
 void Draw_L3_04(const OMC_BAN_5xTxY *bans) const;
 void Draw_L3_05(const OMC_BAN_5xTxY *bans) ;  
 void Draw_L3_06(const OMC_BAN_5xTxY *bans) const ;
 void Draw_L2_08(const OMC_BAN_5xTxY *bans) const;
 void Draw_L2_09(const OMC_BAN_5xTxY *bans) const;
 void Draw_L2_10(const OMC_BAN_5xTxY *bans) const;
 void Draw_L3_11(const OMC_BAN_5xTxY *bans) const;
 void Draw_L4_12(const OMC_BAN_5xTxY *bans) ;
//省略
};

 「描画を順番にやっていくにあたり、番号で管理するのがいいかな」とその時は思っていた。この方法もそれはそれで少しはみどころがあるのだが。

 最近、このソースを発掘してきていじってるわけだが、どうも、扱いにくい。「あれ、ゲームオーバーを書いてるのはどこだっけ」みたいな。

 で、整理しながら、何をしているかを基準に関数をつけなおしてみた。

class  描画
{
 // 省略
 // ドロー前の下処理 Pre
 void PreFloor(const OMC_BAN_5xTxY *bans);
 void PreWall();

 // Draw
 void DrawFloorWall() const;
 void DrawSpriteGameover() const;
 void DrawSpriteHighscore() const;
 void DrawSpriteNewrecord() const;
 void DrawSpriteLogo() const;
 void DrawMenu() const ;
 void DrawModename() const;
 void DrawSpriteHighscoreNewrecord() const;

//省略
};

 これだと、見通しがぐっとあがった。細かく分類すると2種類の関数群に別けられることがわかった。

Pre***関数
 自クラス内の変数・データに変更を加える、前処理。

Draw***関数
 自分のクラスには変更は及ぼさない真に描画系。関数宣言のおしりにconstがつく。

 ついでに、いつのまにか、扱いがあやふやになっていた引数が整理できて、大半の関数で不要であることがわかった。

/////

 非常に些細な例で、しかも、マッチポンプ的?。 「最初から関数名をちゃんとつけてばいいじゃん」とツッコミが入れられるが・・・。

 参考になればということで。


  • コメント (0)
  • トラックバック (0)
トラックバックURL :
http://www.iwai-masaka.jp/tb.cgi/52644