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

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

3天内不再提示

程序员的基本功有哪些

工程师人生 来源:工程师吴畏 2018-12-28 14:31 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

记得来TW之前看到过一个论坛上有人对TW的一条评价:这是一个奇怪的公司,非常强调代码风格。

现在已经在TW工作半年多了,回想起这句话,发现自己已经完全融入到这种“奇怪的”代码风格了。简言之,就是要把程序写的清晰易懂,易维护。具体如何达到这种目的。可以参看下面thoughtworks文集中的一篇,对象健身操,中所阐述的“编程规范”。

方法只使用一级缩进

拒绝else关键字

封装所有的原生类型和字符串

一行代码只有一个“。”运算符

不要使用缩写

保持实体对象简单清晰

任何类中的实例变量都不要超过两个

使用一流的集合

不使用任何Getter/Setter/Property

以上的这些标题如果感觉不是很能表意,不妨去网上搜下或者买本thoughtworks文集看看。其中第一条中的具体内容提到“把函数控制在5行”。其他条目中也有一些具体的“变态的”要求。

我在开头把“编程规范”打上引号的意思是:这不是真正要严格遵守的规范,而是一个方向。以此为方向写出来的程序能够在一定程度上符合前面提到的“清晰易懂,易维护”。我一直认为,标准一定是要定高一些的,这样即使不能完全达到标准的要求,也会为此为努力。比如你的标准是60分,你可以轻松的达到而自我满足;而我的标准是101分,虽然永远都达不到,可是我可以保持在饥饿的状态,从而不断的进步。

工作的前4,5个月,大部分时候写的是一些新代码。可以开心的按照上述的原则去编码。事实上写出来的代码也能够让自己觉得满意:短方法,表意的名字,测试,清晰简单的结构。并且感觉现代IDE对这种代码风格也是比较支持的。直到从TWU回来,回到原来的项目。项目进入support阶段。其实就是给人家修修bug。关键这些bug不是我们之前做的新功能引入的,而是他们的陈年老bug,两三年前的都有。所以这个阶段写的新代码少,多数是先读懂之前的代码,然后做少许修改。不得不说看这些老代码看起来真是恨痛苦,很慢。很多超过一屏甚至两屏的长函数,在我们24寸的大显示器下。

在抱怨老代码写的像一坨的同时,突然觉得,还是自己看代码的能力有欠缺。一直工作在相对来说比较简单易懂的代码库上,然后去看这些一坨的代码就好像一个人很整洁很爱卫生的人突然被扔到垃圾堆里,异常难受。而对于常年在垃圾堆里生活的人们早已久闻不觉其臭,甚至还对垃圾堆中的那些病菌产生了抗体。世界没有那么美好,工作中总是会遇到不尽如人意的代码库,无论是做交付还是做咨询。所以除了要有写出清晰漂亮代码的能力外,还要有读复杂,凌乱的代码的能力和改造复杂凌乱代码的能力,也就是我们常说的重构。

复杂代码可以分成两种:

一种是受到语言,平台,库的限制,使得代码无法写的非常简短和易懂。比如使用纯c,没有很好的语言特性和可用的sdk,使得实现复杂逻辑的时候不可避免的要写出很长很复杂的代码。有时短的代码也不一定清楚,比如在代码中大量使用组合表达式或者是位运算符,在让代码变短的同时,变得更难懂。这些时候通常是处于效率的考虑。

一种是我们有了更高级的语言和其上的大量的框架。如java+spring+struts+hibernate,或者是直接用Ruby on rails,Django等更易用的工具。通常在这些框架下写程序,是很容易遵循上面提到的让程序清晰简单的原则的。如果在这样的基础上写出了让人摸不着头脑的代码,那就完全是程序员的责任了。

现在有种感觉,在层层叠叠的框架下写程序,就像是搭积木,越来越简单。底层封装的越来越严实,程序员都像白痴一样机械的在框架中填写你想实现的业务逻辑。发明框架的原因是为了让程序员不再重新创造轮子。但是长期在框架上工作的结果是,大家都不会做轮子了,真正有一天需要你做点不太一样的轮子的时候,就sb了。

程序员写代码的能力是凌驾于语言之上的,是思考问题,抽象问题和用另外一种语言简洁,有效,清晰地描述问题的能力。我相信一个能写出优秀c代码的人通过一段时间对java及其上的一些框架的学习,也能写出优秀的java代码。

目前我正在学习各种各样的框架,平时的工作也是在这些框架上工作,越来越感觉,学习这些新知识的同时,做为一个程序员的基本功也不能放下。框架是很好的东西,在提高生产力方面,但是框架让写程序变得简单的同时也会降低对程序员的要求,久而久之,基本功就被荒废了。如何锻炼这些基本功?个人认为用最简单的语言,如c,去做一些算法题是一个不错的主意;或者不甘做玩积木的小孩儿,看看框架的源码。其实做为一个计算机专业的学生,这些锻炼应该是当学生的时候都好好练习过的东西。如果现在发现有所欠缺了,就赶紧补补吧。

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

    关注

    4

    文章

    955

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    裸机方式的缺点哪些

    进行的: 应用程序程序员必须确保数据一致性。 超级循环可以与系统计时器轻松同步,但: 如果系统需要多种不同的周期时间,则会很难实现。 超过超级循环周期的耗时函数需要做拆分。 增加软件开销,应用程序难以
    发表于 11-17 06:11

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

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

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

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

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

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

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

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

    程序设计与数据结构

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

    计算机网络排错思路总结

    明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。
    的头像 发表于 04-01 17:32 648次阅读
    计算机网络排错思路总结

    如何在 树莓派 上编写和运行 C 语言程序

    ,一本很好的书是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。这本书对经验丰富的程序员和想学习C语
    的头像 发表于 03-25 09:28 940次阅读
    如何在 树莓派 上编写和运行 C 语言<b class='flag-5'>程序</b>?

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1528次阅读
    零基础入门:如何在树莓派上编写和运行Python<b class='flag-5'>程序</b>?

    Gemini Vision + Raspberry Pi 化身“数字导盲犬”?

    本文讨论了一位程序员利用树莓派、摄像头、Gemini和Python构建PeregrineEye设备,使其成为“数字导盲犬”为视障者服务的项目经历,包括项目灵感、功能、构建过程、遇到的挑战及未来计划等
    的头像 发表于 03-25 09:20 1695次阅读
    Gemini Vision + Raspberry Pi 化身“数字导盲犬”?

    LDC1000 EVM GUI驱动无法安装,怎么解决?

    每次打开LDC1000 EVM GUI就会出现这个驱动没有安装,请问程序员怎么解决这个问题啊!!!
    发表于 01-17 06:15

    阿里云升级通义灵码AI程序员,全面上线

    近日,阿里云宣布其备受瞩目的通义灵码AI程序员已正式全面上线,为开发者带来更为强大和便捷的编程辅助工具。 此次上线的通义灵码AI程序员,在功能上实现了全面升级。现在,它支持VS Code
    的头像 发表于 01-09 11:16 960次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP CPU<b class='flag-5'>程序员</b>参考补充

    UCD3138A64/UCD3138128程序员手册

    电子发烧友网站提供《UCD3138A64/UCD3138128程序员手册.pdf》资料免费下载
    发表于 12-09 14:42 1次下载
    UCD3138A64/UCD3138128<b class='flag-5'>程序员</b>手册