原文 | Dmytro Khmelenko 译者 | Simon
掌握好的编程技能需要大量的练习,这是变得更加专业的唯一途径。最好的结合是先掌握理论知识,然后应用于实践。在软件开发行业中,通过阅读文章、书籍、参加会议、尝试新的库、模式和范例来不断地自学是很常见的事情。
我读了许多书来提高我的编程技能,所以我为那些想要在职业生涯中达到新的高度并编写出精美代码的初学者准备了一些书的清单。
本书教授基本算法,例如搜索,排序和图算法。所有计算机科学专业的学生都将学习数据结构和算法。这是该领域的重要组成部分。这本书将解释搜索功能的实现以及排序算法之间的差异。其中一节是关于图论的。完成之后,你将清楚地了解如何遍历树并找到最短路径。认识到这些算法并能够应用它们,可能会对你下次的求职面试非常有帮助。一个有经验的软件工程师知道在什么情况下使用合适的算法,以及预期的性能。
如果你不想读一本厚书,而更喜欢听课,在Coursera上有一门由该书作者提供的完全免费的课程。
当我读完这本书的时候,我很惊讶为什么到现在还没有人向我解释这些基本但至关重要的事情。你可能会问,它们是什么?让我给你们举几个例子。
例如,只在将要使用变量的地方声明和初始化变量。不需要声明变量,而只需将其分配给代码中的某个位置。该变量应具有尽可能小的可见范围。这样做的好处是代码的可读性大大提高,你的队友会为此而感激不尽的。
另一个例子是如何有效地使用if条件。它们很简单,但会大大降低代码的可读性。请看以下示例:
if ... {
if ... {
if ... {
...
}
}
}
上面的示例中嵌套了太多的if条件,因此很难遵循和测试逻辑。在学习编程时,我们关注if条件如何工作以及何时使用它。但没有人告诉我们它会如何被滥用。该书对此给出了一些建议:避免太多嵌套块,考虑将代码分解为函数,并检查是swtich...case语句是否合适 (如果语言支持的话)。
在这本书中除了这些还涵盖其他例子。
根据维基百科,第一种函数式编程语言是在20世纪50年代后期开发出来的。从那时起,函数式编程的范例才开始变得更加流行。这意味着数据通过函数进行转换,这些函数可以组成许多层。
但是,初级开发人员很难理解如何构建无状态序列。即使对于从未使用过函数式编程的有经验的开发人员来说,编写高效且可维护的函数代码也是一个挑战。
下面的例子是Kotlin对偶数的平方求和:

这可以通过通常的声明方式完成,但这需要编写一些循环并保存中间状态。以函数的方式编写代码可以使其更简单、更清晰和无状态。除此之外,重要的是要认识到函数的顺序可以在性能中发挥很大的作用。看一下上面的示例,当前面调用filter()方法时,后面的函数已经在较小的数据集上操作了。
这本书解释了最流行的函数,并教授如何有效地应用它们,以及如何以函数的方式编写干净的代码。它推荐给已经有一些编码经验的开发人员。
关于软件工程的好书有很多。事实上,我推荐的书可以有其他选择。但是如果你读了上面提到的那些,你将能够编写可读性和可伸缩性更强的代码。
