在过去的几个月中,我们遍历了《编程风格练习》一书中的各个章节。 每章都提出了不同的样式来解决相同的问题-计算文本样本的单词数。 本书使用Python实现,而我使用Kotlin。
现在,一切都必须结束。 但是,在写其他主题之前,我想先介绍一下本周的一些一般性想法。
失落的章节
首先,我必须承认,尽管我阅读了本书的所有章节,但并未遍历所有章节。 有几个原因。
例如,一章专门介绍如何向Python添加类型。 由于Python是一种动态类型的语言,因此很有意义。 相反,如果使用静态类型的语言进行编程,则会自动覆盖其中一种。 在前面的某些章节中,使用Any
类型来实现解决方案,因为类型比帮助多了障碍。
另外,有两章专门讨论处理故障。 例如,关于检查输入的有效性,并抛出异常,如果无效,该异常会冒泡直至调用栈的顶部。 同样,我认为大多数JVM开发人员都非常熟悉这个概念。 另一章将返回默认值。 恕我直言,这不足以撰写一篇完整的文章。
关于我的一点
我的第一种编程语言是BASIC,尽管我还很年轻,但是它的结构决定了我理解程序流程的方式。 当我后来在大学里学习Pascal时,这是一种完全不同的编写代码的方式:
- 代码可以分解为函数
- 流不是基于其编写的顺序,而是显式调用
习惯这种新方法花了很多时间,但最终,它变成了一种方式。 有趣的是,我相信我仍然可以编写一些简单的BASIC程序,但是那肯定会很奇怪。
之后,我被教给C和C ++。 尽管C与Pascal类似,但C ++引入了面向对象编程的概念。 我在课程中不了解相关概念:直到今天,我仍然相信C ++不是教授OOP概念的正确语言。 但是,在实习期间,我读到了很多有关OOP的文章,所有这些都一起点击了。 看起来很简单,甚至很自然。
当我后来在Coursera的Scala课程中介绍函数式编程时,花了我一段时间来熟悉这种新方法。 我必须承认,我并没有保留课程中的所有内容,但是不变性和副作用的观念确实改变了我编写Java代码的方式。
没有像现在这样的地方
关于我学习代码的道路的偏离使我们得出了这一点:从我的角度来看,似乎编程领域的当前趋势是OOP失去了对FP的支持。 OOP的从业者试图将其放在首位,而从业者则将其使用放在首位。 通常,这导致不育的“辩论”(阅读斗争),那里的教条主义比实用主义更多。
我希望本系列证明了样式不仅限于OOP和FP。 我希望它也向亲爱的读者介绍一些您不知道的风格-我当然可以学到很多东西。 最后,我希望它表明样式可以组合在一起:例如,对象不需要是可变的,并且当它们具有状态时,该状态就不需要更改。 我上面提到的异常处理和类型可以在所有样式中使用。
最重要的是,请记住,有一个单一的解决方案适合所有与上下文相关的问题的解决方案。 如果真是这样,那么所述解决方案将因其明显的优势而获胜。 既然不是这种情况,那么上下文可能在样式的相关性中起着巨大的作用。
我可能已经写过1000遍了,但是为了确保消息足够清楚,让我们再写一次:工具带中的工具越多,一个人针对特定工作所拥有的工具就越充分。
这是《编程风格练习》重点系列的第 20 个帖子。其他帖子包括:
翻译自: https://blog.frankel.ch/exercises-programming-style/20/