编程风格的练习总结

在过去的几个月中,我们遍历了《编程风格练习》一书中的各个章节。 每章都提出了不同的样式来解决相同的问题-计算文本样本的单词数。 本书使用Python实现,而我使用Kotlin。

现在,一切都必须结束。 但是,在写其他主题之前,我想先介绍一下本周的一些一般性想法。

失落的章节

首先,我必须承认,尽管我阅读了本书的所有章节,但并未遍历所有章节。 有几个原因。

例如,一章专门介绍如何向Python添加类型。 由于Python是一种动态类型的语言,因此很有意义。 相反,如果使用静态类型的语言进行编程,则会自动覆盖其中一种。 在前面的某些章节中,使用Any类型来实现解决方案,因为类型比帮助多了障碍。

另外,有两章专门讨论处理故障。 例如,关于检查输入的有效性,并抛出异常,如果无效,该异常会冒泡直至调用栈的顶部。 同样,我认为大多数JVM开发人员都非常熟悉这个概念。 另一章将返回默认值。 恕我直言,这不足以撰写一篇完整的文章。

最后, 前一章是关于在顶部编写GUI的,而上一章则是关于REST调用的 :我没有在其中找到很多价值,但是当然,没有什么可以阻止您实现这些。

关于我的一点

我的第一种编程语言是BASIC,尽管我还很年轻,但是它的结构决定了我理解程序流程的方式。 当我后来在大学里学习Pascal时,这是一种完全不同的编写代码的方式:

  • 代码可以分解为函数
  • 流不是基于其编写的顺序,而是显式调用

习惯这种新方法花了很多时间,但最终,它变成了一种方式。 有趣的是,我相信我仍然可以编写一些简单的BASIC程序,但是那肯定会很奇怪。

之后,我被教给C和C ++。 尽管C与Pascal类似,但C ++引入了面向对象编程的概念。 我在课程中不了解相关概念:直到今天,我仍然相信C ++不是教授OOP概念的正确语言。 但是,在实习期间,我读到了很多有关OOP的文章,所有这些都一起点击了。 看起来很简单,甚至很自然。

当我后来在Coursera的Scala课程中介绍函数式编程时,花了我一段时间来熟悉这种新方法。 我必须承认,我并没有保留课程中的所有内容,但是不变性和副作用的观念确实改变了我编写Java代码的方式。

没有像现在这样的地方

关于我学习代码的道路的偏离使我们得出了这一点:从我的角度来看,似乎编程领域的当前趋势是OOP失去了对FP的支持。 OOP的从业者试图将其放在首位,而从业者则将其使用放在首位。 通常,这导致不育的“辩论”(阅读斗争),那里的教条主义比实用主义更多。

我希望本系列证明了样式不仅限于OOP和FP。 我希望它也向亲爱的读者介绍一些您不知道的风格-我当然可以学到很多东西。 最后,我希望它表明样式可以组合在一起:例如,对象不需要是可变的,并且当它们具有状态时,该状态就不需要更改。 我上面提到的异常处理和类型可以在所有样式中使用。

最重要的是,请记住,有一个单一的解决方案适合所有与上下文相关的问题的解决方案。 如果真是这样,那么所述解决方案将因其明显的优势而获胜。 既然不是这种情况,那么上下文可能在样式的相关性中起着巨大的作用。

我可能已经写过1000遍了,但是为了确保消息足够清楚,让我们再写一次:工具带中的工具越多,一个人针对特定工作所拥有的工具就越充分。

这是《编程风格练习》重点系列的 20 帖子。其他帖子包括:

  1. 以编程风格介绍练习
  2. 以编程风格进行练习,将内容堆叠起来
  3. 编程风格的练习,Kwisatz Haderach风格
  4. 编程风格的练习,递归
  5. 具有高阶功能的编程风格的练习
  6. 以编程风格进行练习
  7. 以编程风格进行练习,回到面向对象的编程
  8. 编程风格的练习:地图也是对象
  9. 编程风格的练习:事件驱动的编程
  10. 编程风格的练习和事件总线
  11. 反思编程风格的练习
  12. 面向方面的编程风格的练习
  13. 编程风格的练习:FP&I / O
  14. 关系数据库风格的练习
  15. 编程风格的练习:电子表格
  16. 并发编程风格的练习
  17. 编程风格的练习:在线程之间共享数据
  18. 使用Hazelcast以编程风格进行练习
  19. MapReduce样式的练习
  20. 编程风格的练习总结 (本文)
这篇文章的完整源代码可以在Github上找到。

翻译自: https://blog.frankel.ch/exercises-programming-style/20/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值