- 推薦図書/必読書のためのスレッド 72
752 :デフォルトの名無しさん[sage]:2014/04/27(日) 01:53:24.00 ID:ZFL5ABxC - 一レビュアの意見がきっかけで絶版って・・・
| - クラス名・変数名に迷ったら書き込むスレ。Part24
247 :デフォルトの名無しさん[sage]:2014/04/27(日) 11:54:30.16 ID:ZFL5ABxC - リスト内のあるパターンにマッチする、あるいはマッチしない要素のみを集めて別のリストにする、
いわゆるフィルター関数を作っています。 マッチする、しない、どちらの処理かはこの関数の引数で指定できるようにします。 要素ひとつに対して、パターンとマッチするなら0を、しないなら-1を返す関数は予め用意されています。 あとはリストをたどってフィルターする関数を作るだけですが、 質問は上記の役割の引数の名前をどうするかです。 filter関数の定義 (List list, int <引数>) { foreach (list の各要素 e について) { if (match (pattern, e) == <引数>) then 別のリストに加える }}
| - クラス名・変数名に迷ったら書き込むスレ。Part24
253 :デフォルトの名無しさん[sage]:2014/04/27(日) 15:24:56.79 ID:ZFL5ABxC - ご意見ありがとうございます。
別関数にすると、真偽判定が逆なだけの、ほぼ同じ関数ができます。 filterMached (List list) { foreach (list の各要素 e について) { if (match (pattern, e) == 0) then 別のリストに加える }} filterUnmached (List list) { foreach (list の各要素 e について) { if (match (pattern, e) == -1) then 別のリストに加える }} これは、似たようなルーチンをコピペで作ることによって バグが入り込みやすくなるのと同じ問題を抱える危険性はないでしょうか? それとも、この程度は心配に及ばないでしょうか? パターンをハードコードするか、引数で渡すかは、 今回の質問とは直接関係はないと判断しました。 実際は引数で渡しますが、疑似コードからは省きました。
|
|