开发者进阶必备的9个Tips & Tricks!
优秀的开发人员市场前景是十分广阔的,但想找到一份理想的工作,仅有代码知识是不够的。优秀的工程师应该是一个终身学习者、问题的创造性解决者,着迷于整个软件世界。要成为一名优秀的开发者,应该具备哪些品质并做出哪些努力?本文给出了一些简单的tips,除了优秀的行为习惯之外,还有一些代码工具使用的小技巧。
方式篇:像资深开发者一样思考和工作
1、专注于优雅且可复用的代码
对于软件开发者最重要的小技巧之一是提升代码可复用性的优先级,并且让代码易于测试和阅读。此外,让每个功能都专注于一个目的也很重要。
当开始 coding 时,常常会出现这样的现象:开发人员埋头写下一行又一行代码,最终软件功能愈加丰富,但忽略了代码的简洁性和可读性。开发初期也许问题不大,但当代码数量越来越庞大之后这会产生层出不穷的问题。例如,以这种方式生成的代码往往更难破译和测试,同时很难被重复使用。而那些执行多种目的的代码往往缺乏重点。
因此,最佳实践是将有意义的、简洁的名称分配给每个功能,这可以让你轻松了解每个功能的目的。
在相当一部分情况下,开发人员阅读代码的时间远超过写代码的时间。因此,在你写代码的时候可以保证你离开一会儿之后回到座位上依旧能轻松理解你之前写的代码和它们的目的。
2、了解代码对整体业务的重要
能写代码的人千千万,但是能将自己置身于整体业务版图中思考的则并不多见。作为开发人员需要考虑为什么企业对构建一款应用程序感兴趣,并且了解企业所面向的客户的商业运作方式。
如果开发人员熟悉客户的商业语言,那么就能够更好地将其通过技术的方式实现出来。成功的开发者还知道如何借助商业语言来介绍他们所创造的技术的价值,进而吸引公司其他部门的关注和欣赏。
3、少说,多听
软件开发的过程中专注十分重要。当与其他开发人员一起开会时,应该努力听取建议以进行优化,并且在必要的时候才发言。
认真倾听是最高效的学习方式,与此同时需要你具备谦虚的品质,并且践行“知之为知之,不知为不知,是知也”的原则。而不要成为过度使用“互联网黑话”来掩盖对某个具体问题缺乏了解的人。
4、理解基本原理
学习一门编程语言与学习如何进行编程并不一样。能够识别问题并且采用优雅的解决方案是一个优秀开发者的核心能力。本质上,算法是一个逻辑问题,并且无论解决方案有多复杂,开发者都应该能够将其以图像的形式向初学者解释。
开发者固然会花费很多时间来掌握框架、编程语言和其他工具,但任何问题都应该能够抽象出来,并获取一个有共性的解决方案。
理解基本原理能让开发人员更容易识别共性问题,例如,了解 JavaScript 和 PHP 都是使用一级函数的面向对象的语言,在学习了其中一种语言之后,就会更容易理解另外一种。
5、做好代码质量保障
大部分团队会整合手动测试和自动测试来确保新特性在满足需求的同时拥有较高的质量,并且不会导致现有功能受损。如果比较幸运的话,团队里会有一个专门负责测试的同事,TA 可以确保你所构建的代码是符合需求的且能够在多个环境和场景下正常运行。
即便如此,开发者仍最好在代码进入审查阶段之前对其进行严格的测试,这不仅帮助你更好地完成高质量的工作,同时还能训练你思考测试方案和不常见案例的能力。如果你是独自工作,QA步骤则更为重要,如果你没有在进入生产环境之前发现错误,那么更不会有其他人发现。
测试是安全护栏,也是指南针。
对于初级开发人员来说写测试尤为重要,特别是当你正在一个团队里工作或为一个由多个开发者维护的大型项目/系统做贡献时。测试能够很好地推动你的实施,更重要的是它们可以保护你的工作。优质测试会让你立刻明白你破坏哪些东西。
在工作过程中,试着每隔一段时间就运行你的测试方案,以确保你所构建的一切都没有产生副作用。经过测试,你将会有信心做出代码库所需的更改和改进。
如果你在当前的工作中还没有写测试,那么花费一些时间学习用你所用的语言写单元测试是值得的。
工具篇:VS Code Tricks
1、快速查找定义
在编程时,你也许会遇到无法理解的诸多变量或方法。VS Code 提供了一种简单的方式来查看定义——单击右键,在菜单栏中选择“Go to Definition”即可。
对于 Mac 用户来说,按下command并单击变量名,即可直接查看定义。如果你只是想扫一眼定义的话,按 command键,将鼠标悬停在变量或方法的名称上即可。
2、同时编辑多行代码
要在文档的不同部分编辑多行文字,你可以使用多光标编辑。这个功能允许你在不同的位置放置多个光标,这样就可以批量添加、修改或删除文本。
你可以按住 Alt 键(Win 系统)或 Option 键(Mac 系统)的同时,点击文档中任意位置实现。每一次点击都会产生一个新的光标。
3、集成 Git
VS Code 带有 Git 集成,允许你查看更改、commit、拉取和推送你的代码到远程 Git 仓库。
此前,使用这一特性需要单独下载工具。因此,在 VS Code 内部内置了这一集成很好地优化了开发工作流程并节省了许多时间。
在活动栏中点击 Source Control 按钮并选择文件以查看差异。
点击文件,你将会看到以下变化:
4、注释代码块
无论你是因为尝试追踪一个 bug,还是体验新的代码更改,注释代码块是一个常见行为,这里有一个快捷键可以帮助你节省时间。
Mac: Shift+Opt+A
Windows: Shift+Alt+A
添加行注释可以使用下方快捷键:
Mac: cmd+K+C / cmd+K+U
Windows: Ctrl+K+C / Ctrl+K+U
你也可以使用行注释来注释一个代码块,如果你选择代码块的所有行,并使用上述行注释的键序。这将通过给每一行添加行注释来注释/取消注释所选的代码块。
开发者进阶必备的9个Tips & Tricks!的更多相关文章
- 【翻译】C# Tips & Tricks: Weak References - When and How to Use Them
原文:C# Tips & Tricks: Weak References - When and How to Use Them Sometimes you have an object whi ...
- 45 Useful JavaScript Tips, Tricks and Best Practices(有用的JavaScript技巧,技巧和最佳实践)
As you know, JavaScript is the number one programming language in the world, the language of the web ...
- 转:45 Useful JavaScript Tips, Tricks and Best Practices
原文来自于:http://flippinawesome.org/2013/12/23/45-useful-javascript-tips-tricks-and-best-practices/ 1 – ...
- Must Know Tips/Tricks in Deep Neural Networks
Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei) Deep Neural Networks, especially C ...
- 45 Useful JavaScript Tips, Tricks and Best Practices
<45 Useful JavaScript Tips, Tricks and Best Practices> http://flippinawesome.org/2013/12/23/45 ...
- Productivity tips, tricks and hacks for academics (2015 edition)
Productivity tips, tricks and hacks for academics (2015 edition) Contents Jump to: My philosophy: Op ...
- 前端开发者进阶之ECMAScript新特性--Object.create
前端开发者进阶之ECMAScript新特性[一]--Object.create Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指 ...
- Dagger2进阶必备技能
之前写过一篇文章介绍Dagger2的初步知识, 本篇文章主要介绍Dagger2的进阶知识点. 主要包含的内有有 @Binds与@Provides的使用 Provider与Lazy的使用 依赖与包含 D ...
- Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)
http://lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html Deep Neural Networks, especially Conv ...
- Android 应用开发者必看的 9 个 Tips
去年,Android应用数量已经超过iOS成为全球最大的生态系统,不过在这多大百万的应用中,有些应用的下载量很大,赚的盆满钵满:另外一些应用就石沉大海.无人问津了. 拥有多年程序开发经验,最近在开发A ...
随机推荐
- .NET 6 中外部引用项目NU1105异常问题解决
.NET 6 Project中,添加了其他解决方案的工程后,本地能编译通过,代码签入后,其他同事下载代码,编译报错: 错误 NU1105 找不到"E:\Teld\01Code\TTP_CTP ...
- 微服务11:熔断、降级的Hystrix实现(附源码)
微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC 微服务8:通 ...
- django serializer.is_valid()总是返回False({'invalid': '无效数据。期待为字典类型,得到的是 {datatype} 。'})
在调用添加接口时,一值失败,调试后发现传入的数据并没有问题,但是数据验证时一直返回False,此时使用 serializer.error_messages查看,所返回如下问题: 再往上看显示: 发现 ...
- 基于Java的高并发多线程分片断点下载
基于Java的高并发多线程分片断点下载 首先直接看测试情况: 单线程下载72MB文件 7线程并发分片下载72MB文件: 下载效率提高2-3倍,当然以上测试结果还和设备CPU核心数.网络带宽息息相关. ...
- Spark详解(06) - SparkSQL
Spark详解(06) - SparkSQL Spark SQL概述 什么是Spark SQL Spark SQL是Spark用于结构化数据(Structured Data)处理的Spark模块. ( ...
- ★k倍区间【第八届蓝桥杯省赛C++B组,第八届蓝桥杯省赛JAVAB组】
k倍区间 给定一个长度为 \(N\) 的数列,\(A1,A2,-AN\),如果其中一段连续的子序列 \(Ai,Ai+1,-Aj\) 之和是 \(K\) 的倍数,我们就称这个区间 \([i,j]\)是 ...
- Java解题练习
Java解题练习 1.A+B问题 解题代码: import java.util.*; public class Main { public static void main(String[] ar ...
- (Java)设计模式:结构型
前言 这篇博文续接的是 UML建模.设计原则.创建型设计模式.行为型设计模式,有兴趣的可以看一下 3.3.结构型 这些设计模式关注类和对象的组合.将类和对象组合在一起,从而形成更大的结构 * 3.3. ...
- 联邦学习(Federated Learning)
联邦学习的思想概括为:一种无需交换数据(只交换训练中间参数或结果)的分布式机器学习技术,在保护数据隐私的同时实现数据共享,解决数据孤岛问题. 本文仅介绍基本概念,详细请查看文末参考资料. 基本概念 联 ...
- 洛谷 P2440木材加工 题解
这是一道二分答案算法题,洛谷标签中的贪心等完全用不到. 这道题的数据范围较大,所以保险起见,整型的数据我们都开成longlong 题意很好理解,这里就不做过多的分析了,直接看代码,后面有注释: #in ...