作者swpoker (swpoker)
看板java
标题Re: [承上面]67个if的美学果然不适合小弟...
时间Wed Oct 17 09:18:00 2012
我看到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