项目描述
上传时间
浏览人数
我建议您深入学习并专注于 学习一种编程语言的来龙去脉,这样您就可以对自己用该语言编写代码的能力充满信心。
你应该对至少一种开发平台以及与之配套的相关技术或框架有一定的经验和掌握。
我所说的平台是什么意思?
好吧,它通常表示操作系统 (OS),但它也可以适用于其他类似于操作系统的抽象概念。
例如,您可以是专注于 Mac 或 Windows 操作系统的 Mac 开发人员或 Windows 开发人员,但您也可以是专注于特定 Web 平台的 Web 开发人员。
选择什么并不重要,重要的是你选择了什么。公司通常会聘请开发人员针对特定平台或技术进行开发。如果您具有特定平台的专业知识,那么您将更容易找到一份 iOS 开发人员的工作。
这意味着熟悉平台本身,以及程序员在针对该平台进行开发时通常使用的开发工具、惯用模式和通用框架。
所以不要只选择一种语言;还要选择一个平台。
框架只是一组 用于在特定平台或多个平台上开发代码的库。它通常使该平台上的常见编程任务更容易。
例如: 大多数 C# 开发人员使用 .NET Framework 来编写 C# 应用程序。.NET Framework 包含许多库和类,它们允许 C# 开发人员在更高的抽象级别上工作,因为他不必每次想做某事时都完全重新发明轮子。
堆栈有点不同。 堆栈是一组技术,通常包括一个框架,它们通常一起用于创建完整的应用程序。
例如,有一个称为 MEAN 堆栈的通用堆栈。它代表 MongoDB、Express.js、AngularJS 和 Node.js。
MongoDB 是一种数据库技术。 Express.js 是一个用于创建 Web 应用程序的 Node.js 框架。 AngularJS 是一个前端 JavaScript 框架,用于为 Web 应用程序创建用户界面。 Node.js 是一个用于在 JavaScript 中开发基于 Web 的应用程序的运行时环境。
如果您了解所有这些技术和框架,您将能够开发一个完整的 Web 应用程序。学习堆栈可能非常有价值,因为这意味着您拥有开发完整应用程序所需的所有技能。
有两种主要的 数据库技术:关系数据库和文档数据库。
最起码,你应该知道:
数据库如何工作
如何执行基本查询以获取数据
如何插入、更新和删除数据
如何将数据集连接在一起
此外,知道如何使用 您选择的平台和/或框架从您的代码中以编程方式检索和存储数据 。
大多数开发人员都应该能够编写可以与数据库交互的代码。
逻辑思维是编程所需的第一技能。
更好地掌握编程逻辑的最佳方法是创建软件。问题会出现,你将不得不使用逻辑来找出解决方案。
与记住语法或代码片段相比,这是一种更好的改进方法。它专注于代码背后的逻辑,然后有一个实现语法的目的——导致深刻的理解和技能。
算法 是解决各种计算机科学/编程问题的常用方法。
例如,有几种算法通常用于以编程方式对事物列表进行排序。这些排序算法中的每一个都有一组不同的属性,这些属性涉及速度、内存大小要求以及它所处理的理想数据类型。
计算机科学领域有许多这样的算法,了解如何编写您自己的这些算法的变体以解决您在解决实际编程问题时可能遇到的棘手问题也很重要。
通常, 擅长算法可以让一个开发人员在一个小时内解决一个问题,而另一个开发人员可能需要几天才能弄清楚。
数据结构 属于类似的类别,并与算法一起工作。
所有软件开发人员都应该熟悉几种数据结构,包括:
数组或向量
链表
堆栈
队列
树木
哈希值
套
通过很好地掌握数据结构和算法,你可以轻松优雅地解决许多困难的编程问题。
适当命名代码片段的能力对于成为一名优秀的软件工程师至关重要。
你的变量、函数和类的命名应该让任何阅读你的代码的人都能理解它们的含义。
为您的代码选择好的名称可以让您自己或其他人轻松使用或处理您的代码,而不会浪费时间和额外的脑力。
程序员代码的可读性取决于阅读代码的人的知识水平,以及编程语言本身的能力。
不过,无论如何,有几件事是正确的:
为类、方法和变量选择好的名字
给每一个只有一个目的
一致地格式化你的代码
避免过度嵌套
这些是 可读代码的一些原则。请牢记谁将阅读它,以及他们将如何根据自己的技能背景来理解它。
编写高质量代码的能力是初学者和高级开发人员之间最大的区别之一。高质量的代码会带来更少的错误——同时让开发团队、QA 和管理的工作变得更轻松。
但是如何实现“质量代码”呢?
简单性和可测试性是关键。不要让你的代码比它需要的更复杂,并尽可能将它拆分成独立的模块。
这也确保了它易于测试。测试代码并以有助于测试的方式编写代码是高质量代码的核心。
当然,这可能会在前期花费更多时间——但您通过勤奋创建的高质量代码将成为更有用和更有价值的产品。
重复很容易潜入我们的代码。能够预防它意味着您将浪费更少的时间、空间和维护工作。
可能发生的三种代码重复是数据重复、类型重复和算法重复。
在代码中识别出这些问题后,您可以使用重构技术来消除它们。
伟大的软件工程师知道如何编写干净的代码。
他们这样做是因为有必要提高时间效率、协作编写代码、调试和维护。
编写干净代码应遵循的一些原则是命名的简单性、一致性和清晰性、避免重复和可读性。
干净的代码是一种阅读和使用的乐趣,任何称职的软件工程师都将致力于生成尽可能干净的代码。
在软件开发中,我们总是试图管理复杂性。
从对象的角度思考有助于我们做到这一点,因为它允许我们从一堆交互组件中定义和设计一个复杂的系统,而不是试图将整个复杂性作为一个整体来解决。
您将在软件开发中发现的最流行的语言和模式仍然在很大程度上(如果不是完全)受到面向对象设计和分析的影响。
您应该很好地理解什么是类、什么是不同类型的继承——以及何时使用它们——以及理解多态和封装等术语。
设计模式(例如桥接模式)是解决程序中反复出现的问题的指南。这有助于防止可能出现临时解决方案的问题。
设计模式可以分为创建模式、结构模式和行为模式。
尽管它们在许多情况下都很有用,但对于软件工程师而言,重要的是不要沉迷于尽可能应用设计模式。
有时保留代码原样更有意义——您需要使用辨别力。
过去,我们开发人员会编写一堆代码并将其“扔过墙” 给一群测试人员,他们会在我们的代码中发现各种错误,我们会修复这些错误,仅此而已。
不再。
由于有如此多的软件项目采用所谓的敏捷过程(我们将在讨论方法论时对此进行更多讨论),软件开发人员和测试人员必须更加紧密地合作。
您至少应该熟悉一些基本术语,例如:
白盒测试
黑盒测试
单元测试(不是真正的测试)
边界条件
测试自动化
验收测试
一个好的开发人员——我假设你至少想成为一个好的开发人员——在将代码交给其他人之前测试他们自己的代码。
如果你真的想被认为是专业人士而不仅仅是黑客,这是 没有商量余地的。
作为一名软件开发人员,您可能会花费 90% 的时间来弄清楚为什么您的代码不起作用。
使用调试器并不是调试技巧的全部。相反,优秀的软件工程师或开发人员会首先将他们解决问题的大脑应用到问题上。
他将寻找错误的来源,对可能的原因进行推理,并测试解决方案。
第一步是重现错误。
有效调试的第二步是思考问题及其可能的原因。
第三步:为你提出的想法编写单元测试。
如果您仍然无法找到问题的根源,请尝试取消部分程序并一次专注于较小的部分。这样您就可以隔离错误的来源。
最后,如果您修复了错误,请确保您了解解决方案并可以随意重现。
在您的软件工程职业生涯中,您将有很多代码维护工作要做——包括其他人的和您自己的。
维护好代码 意味着每次处理它时都要改进它:
无论是创建单元测试、清理名称、创建新方法还是重构整个代码段。
您的目标是最终得到更具可读性的代码,这样下一轮维护工作对任何人来说都会更加容易。
尝试尽可能多地自动化此过程,以节省时间和精力。并且只在绝对必要时添加(高质量!)评论。
最基本级别的源代码控制允许您保留对软件项目中不同文件所做更改的历史记录。
它还允许多个开发人员同时处理相同的代码并将这些更改合并回一起。
您应该知道如何很好地使用至少一种源代码控制系统,并且您应该熟悉大多数基本的源代码控制概念。
如果程序员与其他人一起开发软件,他必须知道如何管理他的团队可能使用的不同版本的源代码。
良好的源代码控制还可以降低源代码被意外删除的风险。但最重要的是,它有助于协调开发同一软件的开发团队。
源代码控制系统包括一个存储代码的存储库,然后各个开发人员可以将其“签出”到他们的本地驱动器上。
进行更改后,您将修改后的代码“签入”到存储库中。新版本可以在多个程序员之间进行管理。
当今最流行的源代码控制系统是 Git、CVS、Subversion 和 Mercurial。
Git 是当今程序员的第一大源代码控制系统——随着时间的推移,越来越多的开发团队转向使用它。它提供了许多功能,但其基础知识很容易学习。
Git 的代码库也在不断发展,使其成为面向未来的版本控制系统。
没有理由不精通 Git 成为每个开发人员工具箱中的东西。
程序员应该重用代码以加快开发速度和降低成本,并为用户制作更好的产品。
但是他们需要知道什么时候重用代码是可行的——而且 代码首先必须是高质量的。
这就要求开发人员具有先进的知识和技能。
如果您了解好处和挑战,并遵循代码重用的最佳实践,那么它是一个可以更好、更高效地构建软件的强大工具。
今天,最常见的软件开发方法 是瀑布开发和敏捷开发。
了解如何使用软件架构的原则来正确设计软件,并能够从整体上理解和交流其工作原理。
其中包括五项 SOLID 原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则)、经济原则(机会成本原则、延迟成本原则),以及“最少”、或极简主义原则(最小惊奇原则和最小努力原则)。
如果您尊重软件架构原则,您的开发项目将更加连贯,执行更加顺利,成功的机会也更高。
开发人员应该能够针对未来的任务以及应该如何完成这些任务制定详细的计划——在他开始投入开发之前。
这个软件实施计划应该是广泛的、详细的、精确的和结构良好的。您可以将计划设置为清单,其中包含任务不同部分的子标题(例如后端、前端等)
程序员可以使用这种方法为开发过程带来清晰度和方向。