デザインパターンについて、まだ体系的に学んでいない初心者です
(シングルトン云々言われても、そういう手法があるんだな程度です)。
また、過去の質問もあまり見返していないため、重複していたら申し訳ありません……
現在の処理は、以下のような形となっています。
JavaScript
1$(function(){ 2 // メイン処理 3 main(); 4 5 function main() { 6 // 処理Aを実行する 7 processA(); 8 9 // プロセスAで実行した内容が正しいかチェックする 10 isCheckedProcessA(); 11 12 // 処理Bを実行する 13 processB(); 14 15 // プロセスBで実行した内容が正しいかチェックする 16 isCheckedProcessB(); 17 18 // 処理Cを実行する 19 processC(); 20 } 21});
何だか、チェック処理が間に一々挟まって鬱陶しい気がしてます……
そこで、以下のような形にしたいと考えました。
▽理想
JavaScript
1$(function(){ 2 // メイン処理 3 main(); 4 5 function main() { 6 try { 7 processA(); // 処理Aを実行する 8 processB(); // 処理Bを実行する 9 processC(); // 処理Cを実行する 10 } 11 catch(processAEroor) { 12 } 13 catch(processBEroor) { 14 } 15 } 16});
これだとすっきりするんですけど、「じゃあどこでチェック処理やるの?」と考えたとき、
例えばprocessA
処理中にエラーが発生した場合、processA
の処理中で例外を飛ばすくらいしか
解決策が今のところ思い付きません……
▽processA
のメソッド内のイメージ
JavaScript
1function processA() { 2 // 本来のprocessAの処理 3 // …… 4 // isCheckedProcessAの処理 5}
「いやいや、それって単にisCheckedProcessA
をprocessA
に入れただけやんけ!」
ってなってます(´・ω・)
→**「メイン処理とチェック処理を本来分けてたものを、一緒のメソッドに入れると分かりにくそう」**
ってなってます(´・ω・)
そこで質問なのですが、処理を行うごとに入るチェック処理と
実際の処理を明確に分けたい場合、どのように記述すればいいですか?
ご教示のほど、よろしくお願いいたします。
▽以下、修正&加筆:
具体例に関して、修正依頼をいただきましたので、加筆いたします。
実際に、オセロのプログラムを組んでいてこの問題に直面しているため、それを例として挙げます。
JavaScript
1$(function(){ 2 3 $('li').click(function() { 4 // 選択された箇所のx座標、y座標を取得 5 var y = getPutY(); 6 var x = getPutX(); 7 8 // 相手の石がひっくり返せる座標を取得 9 getReversibleCoordinate(); 10 11 /** 12 * ここでチェック処理を入れないと、相手の石がひっくり返せなくても 13 * 自分の石が置けたり、手番が交代したりしてしまいます。 14 */ 15 if (isErrorPutStone()) { return; } 16 17 // 選択箇所に自分の石を置く 18 putStone(y, x); 19 20 // 相手の石をひっくり返す 21 reversibleEnemyStone(); 22 23 // 手番を交代する 24 turnChange(); 25 } 26 27 function getReversibleCoordinate() { 28 // 相手の石がひっくり返せる座標を取得 29 } 30 31 function isErrorPutStone() { 32 // 相手の石がひっくり返せる座標を取得できなかった場合を検証 33 // 自分の石が置けなかった場合を検証 34 } 35});
……なんだか、元の質問とは別の部分を指摘されそうですが。。
ロジックの組み方に関して、ツッコミ所があれば、ご指摘いただけると助かります(´・ω・)
回答3件
あなたの回答
tips
プレビュー