Scala程序设计原则:Least Power

Scala是为聪明人服务的。Scala充分相信程序员的聪明才智,提供了一整套的工具和方法论供程序员自由选择,以适应千变万化的需求。但是,针对如何选择,我们有一些基本的原则,来帮助程序员找到解决问题的合适方法。

    Least Power原则:如果存在多个解决方案,选择刚好能解决问题的那个。

“刚好”意味着不求面面俱到、不追求最大的灵活性,意味着它仅处理有限多的问题,更易直观分析,更易满足单一职责的设计原则,更易组合和重用。这条原则来自于编程语言选择的原则:如果存在多种语言,选择刚好能解决问题的那个。原因如上。

为什么这条原则适用于Scala编程语言?因为Scala中元编程(Meta-programming)往往能以更少量的代码提供更高的灵活性,“看起来”较之其他方案能更好的解决问题,但追求最好往往永无止境。

    原则一、复杂是你的敌人。

很多开发者对Scala语言的抱怨是,Scala代码往往难以阅读和理解,编译速度也较慢。除却我们无法控制的编译速度,使代码易于阅读、减少复杂度是Scala开发者应该特别遵循的原则之一。

    原则二、不要害怕重构。

对于如Python和Ruby等的动态类型语言,甚至Java或C等较弱静态类型语言,重构是一件很困难的事情。比如,在Python中重命名一个域或方法,你没有方法保障正确更新了所有调用,即使在Java中,由于类型转换和反射的使用,你可能轻易删除或修改了某个类,编译也顺利通过,但运行时还是抛出了ClassCastException或InvocationTargetException错误。Scala是一种强类型语言,编译器可以帮助你发现很多其它语言无法发现的错误,减少犯错的可能性。虽然仍然有一些.toString和==类似的问题会带来困扰,但你在重构Scala代码时会相对轻松很多。

    原则三、不要过度设计。

如果你进需要一个函数或方法,那就把方法或函数传进来,不需要传入整个对象以便于后续使用对象的其它成员;如果你仅需要一个辅助方法,把它嵌套在你当前方法内部即可,不需要单独提出来以便于其它函数或方法使用。这样就可以不用关心方法提供者的其它实现,直观易读;如果需要提供者的其它方法,修改参数传入对象即可。Scala程序开发完成后往往会经历两三次,甚至三四次的重构。这听起来好像很没有效率。但是,每一次重构,代码的性能和可读性的都会有极大的提升。使代码对重构是友好的,比一开始就追求极致的设计会给我们带来更可观的收益。


参考资料:

    Strategic Scala Style: Principle of Least Power, Haoyi Li, http://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html;
    Scala: The Road Ahead, Martin Odersky, Scala Days NYC 2016, http://www.slideshare.net/Odersky/scala-days-nyc-2016

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值