0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编程的三大经验方法总结

m3eY_edn_china 2018-03-05 10:20 次阅读

今年将迎来我编程的第十七个年头。我的编程之旅始于九十年代末,上大学的时候,主要涉足基于表格的网页设计,传统的ASP,和Microsoft Access数据库。原来只是当作业余爱好的编程现在已经成为了我的事业和激情。我一生一半的时间都在学习、蹒跚、成功、失败,并且经常情不自禁地为代码美丽和复杂的天性而折腰。

我在代码上淫浸了足够长的时间,因此看到了很多语言和平台的兴盛和消亡,看到了很多模式被普及,被苛责,然后再次被推广。在某些时候,我常常分不清这是大势所趋还是明日黄花。

编程的流行趋势是短暂的,但我坚守的规则,往往在生活中的其他地方也能发挥作用。事实上,生活就像代码(我已经买了这个域名来证明这一点!)。以下是我总结的3个伟大的经验教训,历经一次又一次编程和生活的大浪淘沙。

1.可商榷的决定往往是一种权衡。

伟大的辩论总是发生在开发社区中。无论它是最近关于TDD作为web开发的一种可行方法的辩论,还是什么水平的开发人员应该使用ORM(或micro-ORMs)。无论是.NET MVC应该优于WebForms还是以JavaScript为中心的app应该比基于页面的app更受青睐,对我来说,答案都一样:看你权衡之后的取舍?

在任何比较两种流行方法的辩论中,我们总是会从自己的立场出发,两利相权取其重,两害相权取其轻。在我的职业生涯早期,我曾执着于追求所谓的正确答案。感觉过程是线性的:摆脱做事的老办法,转而投向新的并且更好的方法的怀抱。曾经有一段时间我深信,编写自己的SQL查询是一种过时的练习,并且ORMs是最后赢家。

但是,我了解到,更好的办法应该由内容决定的。例如,今天完全成熟的ORMs在隔离映射相关数据网格到对象的冗长管道提供了伟大服务,但隔离也使得某种非标准查询变得困难并且有潜在的效率低下问题。n+1 select problem就是经典的在少写代码和写更多高效代码之间做权衡。我使用ORM的程度完全受我期待应用程序使用的数据量,我所受到的潜在的时间限制,app长期可扩展性需求这三者的影响。(顺便说一句,我目前是micro-ORMs,比如说Dapper的忠实粉丝,它能让我编写我自己的SQL和一些精巧的对象-关系映射)。

我已经将这个经验应用到了我生活的其他方面。我是应该买一套公寓还是长租房子?我是应该启动自己的生意还是工作于已经成立的公司?没有绝对正确的选择。当你权衡利弊了之后,你便可以更好地应对生活中的各种难题。

2.清晰并不总和简洁相关。

和大多数工程师一样,我对持续重构一直到代码尽可能地少和简洁的机会垂涎三尺。如果可以选择更少又更简洁的代码来完成同样的任务,那么我为什么要选择要个更多代码的方案呢?通常情况下,更简洁的语言会导致更好的交流。画蛇添足只会阻碍核心信息的提取。但是,最终的目标不应该是简洁——而应该是可交流。于我而言,下面这段直截了当的代码,在它更长的时候……

if (HasFarm() && HasBoat()) { Broadcast("You are wealthy!"); } else if (HasFarm() && !HasBoat()) { Broadcast("You are OK!"); } else if (!HasFarm() && HasBoat()) { Broadcast("You are OK!"); } else if (!HasFarm() && !HasBoat()) { Broadcast("You are poor!"); }

……反而比这个简洁版本更明确。

(HasFarm() && HasBoat()) ? Broadcast("You are wealthy!") : (HasFarm() || HasBoat()) ? Broadcast("You are OK!") : Broadcast("You are poor!");

虽然这是一个品味问题(有些人可能会觉得后者看上去更加一目了然),但是我在这里要表述的观点是,有时候解释的最伟大方法并不是简化。这个经验也适用于日常生活,我花了大量时间来思考怎么样才能更好地传达消息以便于对方接收——有时更详细的讲解并非没有价值,而是更明确传达信息的必须。

举例来说,我想要更明确和更详细地告诉我爸爸应该如何关闭iPad(“按住右侧的按钮一段时间……”)。或者,我看似多此一举地键入了一些我已经提交到本地分支的内容给我的同事(“刚刚犯的错误已被修复”),然后当它涉及到部署更新到产品中时,我就能很明确地知道哪些具体的提交被合并和出现(“检查4812-4822行,其中包括在6/15发行版本中的DoneDone问题,将在今晚的产品发布中提出来。”)。

3.累计良性债务,并且要持续偿还。

我在一个特别害怕欠债的家庭中长大。八十年代中期,我的父母倾其所有又东拼西凑,付了他们第一套房子75%的首付,然后在七年内付清了剩余款项。用现金支付是常态。信用支付在他们看来几乎是一种罪过。作为一个孩子,我的看法是,债务完全是坏的。我从不认为欠债是一种优势。

直到我看到其他人是如何对待债务的——在我20出头的时候——我终于知道了债务也可以是有益的。如果你能够合理地承担债务,那么之后你也能获得成功。如果借助现在更好的上升空间可以加速你之后的成长,那么债务可以成为一笔巨大的财富。

代码也是如此。有时它值得你现在承担一点债务——错过抽象或者有一些未优化的SQL代码——如果这样做可以让你更快地发布内容给不断增长的观众的话。关键是要了解你必须偿还它,以及你可以在适当的时间段之后偿还。

这就是债务在生活和编程中的窍门。偿还债务需要持续进行。将一周10%的时间用于重构,相当于你是在按时支付编码的信用卡账单。如果你保持一种持续、可支撑的还债状态,那么累积债务实际上对你是有好处的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编程
    +关注

    关注

    88

    文章

    3587

    浏览量

    93585

原文标题:17年编程生涯的三大经验总结

文章出处:【微信号:edn-china,微信公众号:EDN电子技术设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机设计与KeilC编程总结

    本内容总结了一些单片机设计与KeilC编程经验规则来方面大家学习
    发表于 12-14 10:41 5538次阅读

    单片机软件编程的五大经验

    经验之一:用“软件陷阱+程序口令”对付PC指针的弹飞经验之二、不要轻信软件狗经验、话说RAM冗余技术经验之四、话说指令冗余技术
    发表于 07-30 22:21

    电力设备高压试验方法有哪些?

    华天电力专业生产串联谐振装置,可进行各种高压试验。电力设备高压试验的方法有哪些?高压试验是检测电力设备能否正常运行的一种常见且有效的手段,试验方法当然也有很多,华天电力为您整理总结主要的
    发表于 11-01 10:11

    3种保护LED电路方法经验总结

    3种保护LED电路方法经验总结 1.保护LED电路中采用保险丝(管) 由于保险丝是一次性的,且反应速度
    发表于 11-14 09:57 656次阅读

    线圈天线设计经验总结

    线圈天线设计经验总结
    发表于 09-12 17:21 224次下载

    PCB布线经验(九大经典文档)

    PCB布线经验(九大经典文档),PCB布线经验(九大经典文档)。
    发表于 12-25 09:54 0次下载

    PCB布线经验技巧总结

    PCB布线经验技巧总结,好东西,喜欢的朋友可以下载来学习。
    发表于 01-20 15:20 0次下载

    我和LabVIEW 一个NI工程师的十年编程经验(PDF及实例程

    《我和LabVIEW:一个NI工程师的十年编程经验》是作者在学习和使用LabVIEW过程中的经验总结。书中由浅入深地对LabVIEW最常用的功能和LabVIEW学习过程中常见的问题进行了一一
    发表于 05-06 11:47 0次下载

    基于verilog的FPGA编程经验总结

    用了半个多月的ISE,几乎全是自学起来的,碰到了很多很多让人DT好久的小问题,百度也百不到,后来还是都解决了,为了尽量方便以后的刚学ISE的童鞋不再因为一些小问题而纠结,把这几天的经验总结了一下。好了,废话不多说,上料!
    发表于 02-11 11:22 1461次阅读
    基于verilog的FPGA<b class='flag-5'>编程</b><b class='flag-5'>经验总结</b>

    指针经验总结

    指针经验总结
    发表于 10-27 15:44 19次下载
    指针<b class='flag-5'>经验总结</b>

    深度解读PLC的编程实例及经验方法总结

    PLC控制系统的输入信号和输出负载:继电器电路图中的交流接触器和电磁阀等执行机构用PLC的输出继电器来控制,它们的线圈接在PLC的输出端。
    的头像 发表于 11-24 15:39 1.5w次阅读
    深度解读PLC的<b class='flag-5'>编程</b>实例及<b class='flag-5'>经验方法</b><b class='flag-5'>总结</b>

    机器学习的12大经验总结

    本文整理了关于机器学习研究者和从业者的 12 个宝贵经验,包括需要避免的陷阱、需要关注的重点问题、常见问题的答案。希望这些经验对机器学习爱好者有一些帮助。
    的头像 发表于 12-13 15:29 2658次阅读

    学习plc编程经验总结

    我们以最熟悉的可编程控制器来说说如何进行理论学习和实践操作。我认为学习编程软件最重要的是理论和实践相结合,特别是编程软件很难通过只学理论就学会的,必须辅助大量的实践,按时间上的分配来说应该是
    的头像 发表于 10-19 09:25 4213次阅读

    常用的种PLC编程方法

    常用的PLC编程方法经验法、解析法、图解法。
    发表于 05-03 17:45 6976次阅读

    EMI整改经验总结

    EMI整改经验总结
    发表于 12-20 15:55 45次下载