`

【干货】11 条编程经验分享

阅读更多

从小白到入门,从入门到进阶,从进阶到高级,从高级到资深,再从资深走不同到路线。这条路可以说是大多数程序员的发展路线,在这个过程中经验就显得尤为重要,尤其是后期,经验可以占据很大的优势。

 

1. 从小事做起,然后再扩展

无论是创建一个新的系统,还是在现有的系统中添加新的功能,我总是从一个简单到几乎没有任何所需功能的版本开始,然后再一步一步地解决问题,直到满意为止。我从来没有妄想过能够一步登天。相反,我一边开发一边学习,同时新掌握的信息还可以用于解决方案中。 我很喜欢 John Gall 的这句话:“复杂系统总是源于简单系统的演化。”

 

2. 一次只做一件事

当我们在开发时,碰到测试失败和功能无效的情况,如果你一次只研究一个问题,那将会更容易找到问题的关键。换言之,就是使用短迭代。必须确保这个问题解决之后,再转移到另一个问题上。这适用于向下提交。如果在你添加新功能之前需要先重构代码,那么先提交重构,然后再添加新的功能。

 

3. 尽早地添加日志和错误处理

在开发新系统时,我做的第一件事就是添加日志和错误处理,因为这两者从一开始就非常有用。对系统来说它比一大把代码更有用,你需要一些了解程序状态的方法。如果系统不能照常工作,那么你就需要知道程序中发生了什么——这是日志的作用。错误处理也是如此——错误和异常越早处理越好。

 

4. 每一行新代码必须至少执行一次

在你真正完成一个功能之前,你必须对它进行测试。不然,你怎么知道它是不是按照你的想法在执行呢?通常情况下,最好的方法是通过自动测试,但并非总是如此。不过,不管怎么说,每一行新代码必须至少执行一次。 一般,我们想触发某种条件很难。但幸运的是,我们可以通过某种方式实现。例如,数据的错误处理可以通过临时拼写错一个列名来触发。或者,一个if语句可以暂时颠倒过来(从 if error 变成 if not error),这样来触发那些平时很难触发的条件,这样只是为了确定代码是否正常运行和它会出现什么结果。有时,我发现有一些行代码永远都不会被运行。当我们做代码检查是它看起来没有什么问题,但就是不工作。你要避免这样的尴尬状况,如果你想你的每一行新代码都会被执行。

 

5. 在整体测试之前先进行模块测试

先进行部分模块测试可以节省时间。通常说来,我们在整合不同的模块时也会出现问题,例如模块之间的接口不匹配。但是如果我们能够信任各个组件的话,那么跟踪集成问题就会变得简单得多。

 

 

6. 所有事情所花费的时间总是比你预期的要长

特别是在编程中,即使一切进展顺利,我们也很难对功能所需的时间做出正确的预算。并且,开发软件时碰到各种意想不到的问题是非常常见的。一个简单的合并操作会导致一系列小bug,一次框架升级意味着一些函数必须改变或者一些API不按照你想象的那样工作。

 

Hofstadter Law( 霍夫施塔特定律)其实道出了真谛:做事所花费的时间总是比你预期的要长,即使你在预期中已经考虑了 Hofstadter Law( 霍夫施塔特定律)。

 

7. 先了解现有的代码

大多数的编码都需要以某种方式改变现有的代码。即使是新功能,也需要适应现有的程序。所以,在你加进去新的内容前,首先需要了解当前的解决方案。否则,你一不小心就很有可能会打破现有的功能。这意味着,阅读代码和编写代码都是必要的技能。这也是为什么看似微小的变化仍可能需要很长时间才能解决的原因之一,因为你首先必须了解上下文。

 

8.阅读和运行代码

幸运的是,对于理解代码,我们有两种互补的方法。你可以阅读代码,也可以运行代码。运行代码的确是个非常棒的好方法。所以,请确保充分利用这两种方法。

 

9. Bug 总是难免的

我不喜欢那些宣称软件开发可以“一蹴而就”的高谈阔论。不论你再怎么努力,bug总是难免的(BUG的定义基本上是:“我们没有想到”)。最好能够做成可以快速故障排除、修复bug和部署修复的系统。

 

10. 解决故障报告

每个开发人员都应该花时间去处理来自客户的故障报告,并修复bug。这能让你更好地理解客户的意图,明白如何使用系统,知道排除故障的难易程度,了解系统的设计情况。这也是为自己的开发成果负责的好方法。不要错过这些好处。

 

11. 重现问题

修复bug的第一步就是重现问题。然后你得确保修复之后,问题能够彻彻底底地消失。这样一个简单的规则,可以确保你不会误将非问题当作是问题,并确保解决方案真的能够奏效。

 

 
1
0
分享到:
评论

相关推荐

    单片机编程干货.zip

    在这个“匠人手记:一个单片机工作者的实践与思考”中,作者分享了他在单片机工作中的经验和见解,这对初学者和有经验的开发者都具有很大的启发性。下面我们将深入探讨单片机编程的关键知识点。 首先,我们来看到...

    809 自动化年机械老司机经验分享,满满的干货.docx

    【自动化】20 年机械老司机的经验分享涵盖了数控加工中的关键知识点,旨在帮助初学者和专业人士提升在该领域的技能。以下是对这些内容的详细解释: 1. **工序划分**: - **刀具集中分序法**:优先考虑刀具,用一把...

    C艹干货分享(都在里面)

    在本压缩包“C艹干货分享(都在里面)”中,主要包含了关于C++编程语言的精华内容。C++是一种强大的、通用的编程语言,它由C语言发展而来,继承了C语言的效率和灵活性,并引入了面向对象的编程理念。这份资料集将...

    better-coder::grinning_face_with_smiling_eyes: 一起快乐成长为更好的程序员吧!编程学习经验、技术干货、资源分享

    编程学习经验 + 技术干货 + 编程小项目 + 常见编程问题编程资源分享 + 人物传记 + 程序员生活 + 编程趣事儿目录编程学习经验如何高效找到优质编程项目如何写好项目文档参与项目有哪些途径如何选择编程学习资源?编程...

    干货学习资源网站.zip

    它可能包含提高阅读理解能力的方法,如何从不同类型的文本(如小说、科技文章、历史书籍)中提取关键信息,并分享了一些推荐的阅读列表,帮助读者拓展知识领域,培养终身学习的习惯。 【֪ʶ.pdf】(可能的拼写错误...

    为什么学习C语言就够了?-干货分享

    C语言,它是计算机编程的老前辈,比C++、Java和Python都要早出现很多年。尽管技术迅速发展,新的编程语言层出不穷,但C语言一直保持着惊人的生命力,它是一种通用的、结构化的、高效的、跨平台的语言,被广泛应用于...

    满满的干货:分享二十个Python学习资源材料.zip

    满满的干货:分享二十个Python学习资源材料。这些资源为Python学习者提供了丰富的学习材料和交流平台。无论是初学者还是有经验的开发者,都可以通过这些资源不断提升自己的Python编程能力和实践经验。同时,随着...

    美团技术干货-后台篇_java_美团_后台_

    7. **实战经验分享**:可能会分享美团在面对大规模用户、高并发场景时的具体应对措施和解决案例。 8. **技术趋势和未来展望**:可能会讨论当前后台技术的发展趋势,如容器化、Serverless等,以及美团对此的探索和...

    微信-干货集中营范例代码.rar

    7. **权限管理**:如果这个小程序涉及到用户登录或分享等功能,那么就会用到微信的授权接口,如获取用户信息、分享到朋友圈等。理解如何正确处理这些权限问题也是开发者需要掌握的关键技能。 通过分析这个“微信-...

    Python开源项目之「自学编程之路」,学习指南+技术干货+大厂面经+资源分享-Python开发

    助你编程能力「突飞猛进」的干货分享 更新中... 视频 程序员必备的8个学习网站,再也不用交智商税了 计算机应届毕业生薪资有多高?算法工程师面试贴心指南 AI人工智能技术还原康乾盛世三代皇帝样貌,竟然有点帅!...

    ios-iOS 纯代码基础框架 包括各种分类干货.zip

    这个压缩包“ios-iOS 纯代码基础框架 包括各种分类干货.zip”包含了Ws1797822324在GitHub上的BasisProduct项目,旨在提供iOS开发者的实用技巧和经验分享。在这个框架中,开发者可以学习到如何从零开始构建一个功能...

    2万字干货 2018经典面经备战校园招聘1

    这篇分享主要是一位作者在2018年校园招聘过程中积累的经验和心得,涵盖了从心态调整、实力提升到具体的技术面试准备等多个方面。作者提到了不同公司的面试流程和特点,以及面对招聘过程中的挫折与收获。 【重要知识...

    做了一个Android干货妹子APP,你会喜欢的.zip

    总的来说,"做了一个Android干货妹子APP"是一个极好的学习资源,对于想要提升Android开发技能的开发者而言,无论是新手还是有经验的开发者,都能从中受益。通过参与开源项目,不仅可以学习到实际开发经验,还能与...

    如何自学-Python(干货合集).pdf

    学习 Python 的经验分享 Python 是一种非常适合初学者入门的语言,上手很容易。通过网络资源,我学习了 Python,并总结出以下经验。 阶段一:前辈领进门 在开始学习 Python 之前,我有过 Java 语言的学习经验。当...

    史上最全的Java源码学习资料,全是干货,建议先收藏再学习

    以下是一些关于Java源码学习的经验分享。 首先,明确阅读源码的目标至关重要。我们需要知道为什么要读源码,例如,理解框架解决的问题,比较与同类框架的优劣,这样有助于我们深入理解其设计意图。同时,不要忽视...

    一个简单的干货集中营客户端.zip

    Gank.io是一个知名的开发者干货分享平台,它收集并整理了各种技术文章、代码片段、实用工具等资源,帮助开发者提升技能。 【描述】: 描述中提到的".zip"表明这是一个压缩文件,解压后可以得到项目的源代码。...

    国外技术干货:facebook-performance-caching-dc.zip

    9. **技术栈详解**:文档可能涵盖Facebook使用的具体技术和工具,如编程语言、框架、库等,以及它们如何与缓存系统集成。 10. **未来趋势**:作为技术学习资料,文档可能也会讨论未来的缓存技术和Facebook的展望,...

    前端大厂最新面试题-万字面试干货.docx

    参考链接中的文章提供了丰富的面试准备资源,包括中高级前端面试秘籍、面试经验分享、JavaScript手写代码技巧等,可帮助你更全面地准备面试。在面试过程中,清晰阐述项目经验,展现你的思考和解决问题的能力,将是...

    干货网站ssmcjp

    根据提供的文件信息,我们可以归纳出一系列与编程资源相关的知识点,主要涵盖在线工具和服务,这些工具和服务对于从事软件开发、文档编写和技术学习的人来说非常有用。下面将详细介绍这些网站及其功能。 ### 1. ...

    微信小程序广告位开发及经验分享

    ★课程亮点○简单易懂○干货经验分享○学完即可开始赚钱之旅 ★课程大纲○小程序广告赚钱的步骤○如何快速开通微信小程序流量主○小程序广告位类型及说明○小程序广告位收益分析○如何提高激励视频广告收益○激励...

Global site tag (gtag.js) - Google Analytics