首页 > 其他分享 >《代码大全》观后感

《代码大全》观后感

时间:2023-05-21 20:34:03浏览次数:42  
标签:易读 逻辑 观后感 函数 代码 自己 便是 大全

读《代码大全》与读别的书不一样的就是,总能找到共鸣。书中所讲到的很多问题都是工作中实际会遇到的,很多经验都是从实际工作中总结出来的。很多东西都是以往所看的其他类技术书籍不会提到或者不会重点提到的,但却是自己工作中有深刻体会的。

“代码是写给人看的”便是我感受最深的一条。

关于代码可读性的争论一直存在,各个论坛里社区上总会有关于是否需要加注释的争论,甚至CSDN上还会有用拼音命名是否合适的争论。但只有当自己真正去维护那些不可读或者很难读的代码的时候才会有最深刻的体会。
在读书的时候,老师虽然总是教我们写完作文后读一下来改善自己的作文,但很少有人真正这么做,原因之一是觉得自己的文章不够好或者很烂,羞于回味;原因之二便是,写完了作文就是完成了自己的任务,读自己的文章似乎并不是学生的任务之一。

在学生时代写代码也是一样,堆砌完代码便是成功了第一步,编译通过便是第二步,等到执行输出了想要的结果,便是大功告成,谁会去读自己的代码?谁又会去读别人的代码呢?

可是等到干了程序员的工作,那便是不一样了。

首先,我们要读已有的代码,才能继续自己的工作;有多少人没有抱怨过他人的代码晦涩难懂呢?或者抱怨文档不够呢?

其次,我们很有可能在一段时间后要读自己的代码,如果连自己都不明白自己写的是什么,是不是很尴尬呢?

所以,其实,大家都希望自己能够轻松的读懂代码,指望别人的代码好懂好读,推己及人,自己的代码如果在写的时候就考虑到可读性,岂不是功德无量?

在同一个工程里,我见过好的代码和差的代码共存,自己维护过这样的代码就知道代码风格糟糕的时候是个什么感觉。糟糕的代码,一个类就有15000多行,其中一个函数1500多行,里面嵌套了多层的if-else和多个循环,根本理不清其中的代码逻辑;函数命名看似规范,但和函数实际完成的功能毫不沾边;好不容易有个注释,却发现这个注释是过时的甚至和代码逻辑相悖。好的代码,一个文件里只有一个类,类名和文件名一致,光看类名就知道这个类是做什么的,只看其中开放出来的接口就知道如何使用这个类,该传什么参数;每一个子函数和成员变量都有清晰的名字,不需要看代码也不需要注释就知道函数的功能,函数短小精悍。调试差的代码的时候简直就是噩梦,如果不重写或者重构,改一个bug能够引入5个新的bug,改个提示信息都得弄懂所有逻辑后才敢动手;易读的代码,虽然也可能出问题,但是定位起来相当简单,改起来相当放心,不会担心说改了后会影响别的功能。

确实,好代码就如好文章,要写出来很难;但至少我们可以逐步改进,至少我们可以让自己或别人读得不那么难受。

让代码易读很难,不能随便用a,b,c和x,y,z给变量与函数命名,需要仔细遵循命名规则,需要根据是成员变量还是局部变量添加不同的前缀,有的时候需要查询字典或者翻译工具才能给出一个长度合适,表述准确和便于理解的名字。

改善代码的易读性也不难,适当添加空行,利用IDE的缩进功能调整好缩进,代码该放在一行的就放在一行,该分行的就分行,适当添加空格,整个工程的代码采用同一风格,就能让代码看得更舒服些。

让代码易读很难,不能将所有的代码行堆砌在一个函数里,也不能将所有的函数都堆砌在一个类里,不能随随便便的写代码,而需要深思熟虑。

改善代码的易读性也不难,在写代码之前理清逻辑,按照逻辑写代码,给代码分段,那么很容易写出短小精悍内聚高的函数和类。

总而言之,要写出好代码是很难的事情,但是逐步提高总不会太难。重要的是,你喜欢读自己的代码吗?如果自己都不喜欢读,那么让代码变得好看一些,至少要自己能读得懂。好好阅读他人的好代码和差代码,自然而然就会知道可读性的重要性,然后按照<<代码大全>>里面的方法逐步改进吧!

隔一段时间回味一下自己的代码,说不定会发现愚蠢的笔误,不可理喻的命名,糟糕的逻辑,这些都是可以逐步改进,让自己的代码变得更漂亮一些,更漂亮的同时,代码往往也会更健壮,更稳定,更可靠,至少,自己不至于过于讨厌自己的代码,工作也变得愉快了些,不是吗?
————————————————
原文链接

标签:易读,逻辑,观后感,函数,代码,自己,便是,大全
From: https://www.cnblogs.com/yzx-sir/p/17419102.html

相关文章

  • P9344 去年天气旧亭台 代码
    不带滚动数组代码:#include<iostream>#include<cstdio>#include<cstring>#defineintlonglongusingnamespacestd;constintN=2000010;inta[N],c[N],T,n,f[N];signedmain(){ scanf("%lld",&T); while(T--){ mems......
  • 第二十篇——通达信自动提示启明星、黄昏星K线组合形态(含指标公式代码)(从零起步编写通
    内容提要:本文主要介绍了启明星(早晨之星)和黄昏星(黄昏之星)K线组合形态的概念以及启明星和黄昏星通达信指标公式的写法,并设置K线颜色,添加文字标记。 一、启明星(也称早晨之星) 启明星K线组合形态是一种反转信号,出现在下降趋势或者回调中,由三根K线组成。第一根K线是大阴线......
  • #球钟算法题解以及代码完成
    球钟问题描述:球钟是一个利用球的移动来记录时间的简单装置。它有三个可以容纳若干个球的指示器:分钟指示器,五分钟指示器,小时指示器。若分钟指示器中有2个球,5分钟指示器中有6个球,小时指示器中有5个球,则时间为5:32。       工作原理:每过一分钟,球钟就会从球队列的队首......
  • CV攻城狮入门VIT(vision transformer)之旅——VIT代码实战篇
    ......
  • MFC视图切换大全总结
    单纯视图之间的切换单文档多视图切换是我在学习MFC中遇到的一个老大难问题,在今天总算是一一破解了。我觉得视图切换分为三个等级,第一是在未切分窗格的情况下切换视图类;第二是在分割窗格的一个窗格内实行视图切换;第三是在分割窗格和未分割之间的切换和视图切换。在MFC创建SDI的伊......
  • 【代码练习】一道题带你掌握二分查找
    二分查找解析:思路一:暴力解法,直接遍历,从头开始查找,如果找到直接返回下标,找不到返回-1。classSolution{public:intsearch(vector<int>&nums,inttarget){for(inti=0;i<nums.size();i++){if(nums[i]==target)......
  • 推荐几个好用的在线代码编译器
    程序员最喜欢用的在线IDE代码编译器,功能很强大,类别很全!1.网址https://tech.io/snippet支持20+种编程语言,页面上没有杂七杂八的东西,非常简约,非常干净,另外,它上面的代码段还可以嵌入到网页之中。2.网址https://www.tutorialspoint.com/codingground.htm它其实并不单单是一个在线......
  • Python的33个保留字有哪些?关键字大全
    Python的33个保留字包括False、None、True、and、as、assert等,Python的标准库提供了一个keyword模块,可以输出当前Python版本的所有关键字列表,腾讯云服务器网来详细说下Python的33个保留字及保留字查询方法:Python的33个保留字Python的保留字或关键字是指我们不能把它们用作任何标识......
  • C语言函数大全-- _w 开头的函数(5)
    C语言函数大全本篇介绍C语言函数大全--_w开头的函数1._wspawnl1.1函数说明函数声明函数功能int_wspawnl(intmode,constwchar_t*cmdname,constwchar_t*arglist,...);启动一个新的进程并运行指定的可执行文件参数:mode:启动命令的模式,可以是_P_W......
  • 【代码随想录算法训练营第一天】704. 二分查找、27. 移除元素
    Day1-数组Leetcode704二分查找初解已经不记得二分查找了,遍历找O(n)其实也过了,只是借此复习一下二分,确实快很多。二分的前提条件题目里也都明示了:无重复,(从小到大)排序。我没有用到这个条件,自然时间复杂度高于最优解。看完解答我再看了一眼题目的标题,才知道是考BinarySearch嗯......