Re: [承上面]67個if的美學果然不適合小弟...
我看到67個if想到可以參考重構跟敏捷開發的運用
因為物件導向的缺點就是容易複雜跟不知入手
重構可以解決上述的問題
我自己的例子是在寫利用郵局提供的原則(可在郵局網站下載)
撰寫判別5碼的郵遞區號
寫法的步驟是先寫類似腳本的寫法先寫幾個原則
然後利用重構搭配樣式開始改變程式架構
之後才開始寫其他的原則
其實上述跟這次問題沒什麼關係
這次的關鍵在於演算法
但可以透過這種的訓練
讓自己撰寫程式的功力變的更好更快
我自己有個心得就是
程式要寫三次才穩定
穩定的程式碼也代表系統的穩定
但穩定並不是不可改變
而是在需求的不確定性之下,發揮最大的彈性
提供給你參考
※ 引述《JazzChen (PhoenixJazz)》之銘言:
: 小弟在前一篇發表了67個if
: 一時之間成了版標...太令小弟震驚了!
: 不過小弟不是個"勤能補拙"的人,無法好好地寫完67個if
: 最後綜合了各家說法以及小弟個人(翻書)的見解,
: 在此放上小弟腦力激盪後的寫法
: 請各位大大賜教!希望能夠再增進JAVA的功力!
: 默默附上:
: //random number
: int[] D = new int[4];
: D[0] = (int) (Math.random()*10);
: do{
: D[1]=(int) (Math.random()*10);
: } while(D[0] == D[1]);
: do{
: D[2]=(int) (Math.random()*10);
: } while(D[0] == D[2] || D[1] == D[2]);
: do{
: D[3]=(int) (Math.random()*10);
: } while(D[0] == D[3] || D[1] == D[3] || D[2] == D[3]);
: //判斷A & B
: int[] R = new int[4];
: int a = 0;
: int b = 0;
: int g = sc.nextInt();//假設前面已宣告過sc了
: for(int i=3; i>=0; i--) {
: R[i] = g%10;
: g = g/10;
: } //把輸入的值設為陣列
: for(int i=0; i<4; i++) //判斷A
: if (D[i] == R[i]) a++;
: for(int i=0; i<4; i++) //判斷B
: for(int j=0; j<4; j++)
: if (i!=j && D[i] == R[j]) b++;
: //輸出輸入便不寫了,偷懶一下
: 最後,想問一下有沒有更快可以設定random的方法...
: 雖然說只有四個數字,但是版主大大說得好,能偷懶就偷懶XD
: 想詢問大大是否有更好的方法
: 感激不盡!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.29.28.131
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 8 篇):