[问题] class 行数过长问题

楼主: shadow3x3x3 (UCCU)   2016-06-16 08:56:16
第一次在本版提问问题,还请多多指教 !
最近写Ruby的时候其实都使用了Rubocop https://goo.gl/py0lAk
来检测自己程式的坏味道
大部分检测出的问题都可以想办法修改
可是目前最让我棘手的是Ruby的class不能写超过100行这项原则
虽然我还挺认同这项原则的,但是实际要遵从时还是相当困难
例如我已经想破头都想不出到底如何将我超过百行的class在精简(已经继承一父类别)
于是为了解决百行内问题,我就将一些方法移到module里,再从class中include进来
可是拆出的module我也只命名成xxx_util,甚至module方法里还用到class变量(@foo...e
tc
目前的做法感觉相当不健康,但另外我还能想到的做法就是将类别关系更加细分
拆成更多父类别一层层继承下来...
又或者是我Ruby Code写得太冗长应该先从改善Ruby Code下手吗?
想问问各位是如何遵从单class不超过百行的原则,或是有没有正确的做法是我应该去实
现?
谢谢各位!
作者: Neisseria (Neisseria)   2016-06-16 10:26:00
比起行数,class 的 SOLID 原则更应该要注意有时候一个 method 可能就 30-40 行了一个 class 只能 100 行实在有点少 =.=一个 method 30 行可能也是有点多,可能要 refactor有时 refactor 成 private method,行数不一定会减少
作者: mars90226 (火星人)   2016-06-16 15:21:00
100行不是硬性规则,只是要提醒你行数少表示程式清晰如果真的无法低于100行,就放著吧,继续改可能反而减少程式可读性
楼主: shadow3x3x3 (UCCU)   2016-06-16 22:02:00
其实Rubocop也有规范一个method不超过10行,这方面还算是好控制另外确实拆开来可读性会变差一些,或许还是case by case吧
作者: rayway30419 (RayWay)   2016-06-17 01:02:00
你可以自己定义rubocop我用default的lint两天就反安装了

Links booklink

Contact Us: admin [ a t ] ucptt.com