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

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

3天内不再提示

程序员最应该学习什么

工程师人生 来源:工程师吴畏 2019-07-26 17:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

大多数人以为他们需要学习特定技术、算法、数学或其他形式的具体知识。 但是在Joost看来,这些从来都不是最主要的。 最主要的是他们需要学习“ 自律 ”。

过去七年半以来我在Ronimo辅导了很多编程实习生,数百名学生和毕业生,在他们身上我看到一样同样的东西需要学习,也许有人认为,他们应该是需要学习特定技术、算法、数学或其他形式的具体知识。 但是在Joost看来,这些从来都不是最主要的。 最主要的是他们需要学习“ 自律 ”。有纪律地编写清晰代码,有纪律地在代码变得混沌时重构它们;有纪律地删除未使用的代码和添加备注。

我在这个主题上花了大部分时间辅导实习生,不是解释先进的技术或我们的引擎的细节,而是让他们编写更好的代码,我总是询问有工作经验的开发者,他们认为成为优秀程序员最重要的是需要什么?他们通常回答代码应该清晰,易于理解和维护。这确实也是我想听的,但是年轻的程序员罕有能始终遵循的。

记住自律,不要停息,如果所有变量的名称都错了,但是功能完美,那么代码将超级混乱,从功能代码中逐步理清虽然在短期内可能得不到回报,但这就是迈向自律的第一步,这也是作为实习生的好的导师通常非常注意代码质量,从而能迫使实习生迈出正确的第一步。

下面是我经常看到的一些例子:

假的函数/变量/类

这些函数 类和变量实际做的事情并不是它们名称的意思所代表的,而是实现其他功能,它们的名字是假的,名不符实,很明显,名字应该是正确的,但是让我们惊讶的是很少见完全封闭的名称。

。..。..

(banq注:缓存失效和命名是计算机科学最难的两件事)

纠结在一起的类

我看到另外一个问题是泥团一样黏糊在一起的类,做了很多无关的事情,无关的新特性新功能一点点加入,让简单的类变得臃肿,塞入各种与该类名无关的行为,有时一个类的大小超过几百行代码。

。..

避免这个问题的办法应该总是想:我在这里添加的功能符合类名本身吗?如果不是,那么重新命名类的名称,或者分成两个独立的类。

如果你不能想出一个代码类的合适名称,就会发出坏味道,那类的内部就会变得混杂。有时可能一个需要分成两个部分,才能找到合适的名称分别代表它们。

超大号的类

随着时间推移,越来越多代码添加到一个类,变得非常臃肿,虽然这个类还能工作,但是代码太长,非常繁琐,容易发生很多bug,方向和细节混同在一起。

切分一个非常大的类的工作是枯燥的,也是一个挑战,类中代码高度交织在一起,运行中不断修复添加新功能,最后结果是必须有自律才能阻止它变得更大。

一般经验是我们尽量保持类代码低于500行,函数低于50行,有时虽然不可行,但是我们总能寻找到办法来重构它,切分成更小 更易于管理的代码块。

代码的注释

如果没有注释,代表没有任何信息,这是临时破碎的代码吗?被取代的旧代码在哪里呢?

。.

并行逻辑和重复代码

举一个例子,有某个结构特征的名称暗示我们一些它是什么的信息,比如“TreeBackground.dds”。 为了了解这个特征能被用于一个tree类,我们需要检查文件名中是否以单词“Tree”开始。 通过使用 filename.beginsWith(”Tree”)检查得很快。 这段代码如此短,但是我们在不同地方需要它,这样我们就拷贝粘贴它,这就造成了重复代码,当然每个人知道重复代码不好,但是这段代码真的很短,拷贝粘贴非常容易,我们这里面临的问题很明显:也许以后我们会检查这个结构特征是否适合树tree的改变,那是我们就需要在每个地方单独一个个去解决(因为这段短代码被复制到这些地方)

一般经验是,这段代码不应该被复制,应该放在一个函数中,即使它超级短,主要因为做一个函数再调用需要许多代码,而直接复制粘贴更直接简单?

本文讨论的事情似乎很简单,它们应该是大学第一年教,但是面临的挑战是如何让他们花时间去遵循,总是记住它们,这就是这为什么是最重要的事情,他们最应该学习的不是知识,而自律。

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

    关注

    4

    文章

    956

    浏览量

    30999
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MPC8378适配程序应该怎么调整?

    型号IS43DR16640C-25DBLI,其他物料没有更换,生产调试发现之前的程序不管怎么调试都无法正确读取数据,数据报错,比如程序写的1111,数据读取的是1100,请问我们适配程序应该
    发表于 04-01 08:09

    学习单片机快速方法

    那么多钱去养那些优化代码的程序员还不如买一套新的硬件。我现在也是用C语言编程的。 汇编几乎不用。知道怎么使用开发软件之后,你就可以按照学习板的教程进行编程练习。练习要分模块进行,比如流水灯模块,你
    发表于 01-14 07:42

    芯盾时代SDP助力企业应对核心机密泄露危机

    无论你是程序员、文案、财务,无论你想撸代码、出海报、做报表,各式各样的AI总能满足你的需求,让你的工作更加轻松。
    的头像 发表于 12-26 11:49 832次阅读

    大理的AI野心藏不住了——风花雪月中千名程序员探讨人工智能

    2025 年12月4日至6日第二届CCF程序员大会暨大理人工智能与应用国际开发者大会在大理圆满落幕。
    的头像 发表于 12-24 17:45 878次阅读
    大理的AI野心藏不住了——风花雪月中千名<b class='flag-5'>程序员</b>探讨人工智能

    程序员最常见谎言

    了。 28我已经测试过了,这个功能没问题,可以上线了。 29别担心,这个问题很快就能解决。 30代码快写完了,已经完成 90% 了 。 希望大家对程序员多一些容忍以及谅解! 各位程序员你们都被我说中了哪些?说说你们的观点
    发表于 12-10 08:24

    堆和栈的区别

    程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
    的头像 发表于 11-27 18:13 1222次阅读

    软通国际亮相2025沙中开源与AI科技峰会

    2025年11月11日,由沙特程序员协会(parmg)主办的"2025沙中开源与AI科技峰会"在利雅得盛大启幕。
    的头像 发表于 11-14 17:45 1599次阅读

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 940次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 833次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    如何在机器视觉中部署深度学习神经网络

    人士而言往往难以理解,人们也常常误以为需要扎实的编程技能才能真正掌握并合理使用这项技术。事实上,这种印象忽视了该技术为机器视觉(乃至生产自动化)带来的潜力,因为深度学习并非只属于计算机科学家或程序员。 从头开始:什么
    的头像 发表于 09-10 17:38 1042次阅读
    如何在机器视觉中部署深度<b class='flag-5'>学习</b>神经网络

    无法在调试中连接到PSOC4怎么解决?

    您好,我有一块使用 PSOC4 CY8C4013SXI-410 制作的小板。非常简单的设备,它只有三个 GPIO 引脚并通过 5 引脚 SWD 进行编程。我遇到的问题是程序员能够看到该设备但无法对其进行编程。
    发表于 07-22 06:02

    跟老齐学Python:从入门到精通

    础的学习者介绍一门时下比较流行、并且用途比较广泛的编程语言,所以,本书读起来不晦涩,并且在其中穿插了很多貌似与Python 编程无关,但与学习者未来程序员职业生涯有关的内容。 获取完整文档资料可下载附件哦!!!! 如果内容
    发表于 06-03 16:10

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法论的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序员开发
    发表于 05-13 16:45

    CY7C68013A无PID和VID,如何制作PDF?

    我用 CY7C68013A MCU 设计了一个 PCB,所以这意味着我不是程序员之类的。 但是我尝试上传一些代码,但没有 PID 和 VID。 我找到了一些关于如何制作的 PDF,但那些对我来说很难。 有人可以帮我吗?
    发表于 05-13 07:50

    【「零基础开发AI Agent」阅读体验】+ 入门篇学习

    10.AI Agent开发模式走向了零代码可视化模式(需要我们程序员对此有着观念上的转变),但是掌握编程技术,有助于AI Agent的开发进阶
    发表于 05-02 09:26