首页 > 编程语言 >10个编程好习惯:优秀程序员的经验分享

10个编程好习惯:优秀程序员的经验分享

时间:2024-04-11 09:11:19浏览次数:29  
标签:10 int 代码 编程 程序员 文档 命名 void

大家好,我是知微

作为一个程序员,写代码就跟厨师做菜一样,如果没有一些好的方法和习惯,做出来的菜肯定又慢又难吃。

下面分享一些优秀的编程习惯,用了都说好!

1、规范的命名

命名是代码清晰度的关键。

变量、函数和类的命名需简洁明了,并遵循项目中约定的命名规则,如驼峰命名法或下划线分隔法。这样你的代码会更易于理解和维护。

下面展示一下不规范和规范命名的C语言例子

不规范的命名:

// 不明确意图的命名方式
int a;          // 无法表达变量用途
float b;        // 缺乏描述性
void doSomething(); // 动作描述不清

int dta;        // 缩写可能令人困惑,不容易理解
void procData();    // "proc" 是处理的缩写,可读性不强

// 示例代码片段
int rfq4351d; // 没有任何意义的命名

void hndlrq() {
    int qwk = 10; // 很难猜到 qwk 是什么
    // ... 更多的代码
}

规范的命名:

// 清晰、具有描述性的命名
int accountBalance;    // 表明这是一个账户余额
float interestRate;    // 表明这是利率
void processOrder();   // 动作和目的明确

int customerData; // 用于存储顾客数据
void processData();   // 更清晰的函数命名

// 示例代码片段
int requestId; // 明确表达了这是一个请求标识

void handleRequest() {
    int maxRetries = 10; // 清晰表明这是最大重试次数
    // ... 更多的代码
}

2、合理编写注释

程序员最讨厌别人的代码不写注释,因为阅读起来特别困难。

虽然前段时间很流行防御式编程,不写注释,代码也尽量让他人难读懂。

但是该写注释的,咱还是得写,这样可以提高我们的效率。否则时间长了,自己不根本记得。

图片

但是切记,注释不要写太细,因为后面代码改动,以前的注释可能就不适用了,如果没有及时更新,反而会误导自己。

3. 随时保存代码并测试

修改代码后,应立即进行自测试以确保正确性。这叫步步为营,慢就是快。

不要等写完一大段代码后才提交,这可以减少调试的难度并及时发现问题。

我以前就犯过这样的错误,觉得修改的代码逻辑不算特别复杂,就是量大一些而已。结果全部改完了之后,编译运行。出来意想不到的结果,然后进入漫长的多线程调试,简直就是灾难。

4、学会先思考逻辑后写代码

编程更多的是思考,梳理逻辑,写代码只是将你的想法表达出来。如果一上来就开始写代码,而不去思考和设计,可以100%确定,写出来的代码一定很烂。

5、阅读官方文档

​ 官方的文档,你也可以理解为说明书。有谁能比设计产品的人更了解产品呢?这些文档不仅质量非常高,通常内容也都是最新的。

所以,当你遇到问题的时候,有时候看看官方文档,反而比用搜索引擎寻找解决办法更快。

6、不要重复造轮子

​ 每次你辛苦编码想要实现的功能,很可能在开源社区已经有了特别棒的解决办法。如果你能够善用这些现成的资源和各种开源的代码库,你的工作效率可以大大提高,轻松许多。

一个好的开源工具或库通常具备以下特点:

  • 开放源代码,并且许可证较为宽松:这样的轮子能够让你自由使用,甚至是在商业项目中,而不用担心法律问题。
  • 完善的文档和规范的代码:有详尽文档的轮子易于理解和使用,规范的代码则保证了可读性和可维护性。
  • 友好的接口,最好还附有示例:接口设计得好的轮子可以简化开发流程,如果附带示例,能使你快速学会如何使用。

比如我这篇文章(点击跳转)里提到的定时器模块,日志模块,多功能按键模块,你稍稍改改就能用上。

7、多读多写代码

怎么理解多读呢?这点就跟写作一样,没有大量的输入,你很难有好的输出。

一学就会,一练就废。要想摆脱这种情况,就需要多写了。

8、预留开发时间

新的项目立项之初,一定会评估开发时间。

你要是不会评估开发时间,拍脑袋随便定一个。时间长了,老板肯定不同意。时间短了,开发中可能遇到的各种问题,到时候天天加班,紧赶慢赶,心神俱疲。一头乌黑浓密的头发,没多久就成了地中海。

所以,合理的预留开发时间,可以确保交付的质量,也能让自己和团队轻松一点。

9、大胆重构

​ 不要害怕重构代码,好的设计不是一开始就有的,而且逐渐重构出来的。

通过重构,你可以改进代码结构,提高代码的可读性和可维护性 。而这种活,应该贯彻整个开发过程,你也会因为重构,使自己的编程能力得到极大的提升。

10、 善用代码管理工具,定时备份

我接触到的有些程序员,每写一版代码,都是复制一份,而且不备份。说实话,我看着都担心,如果某一天硬盘坏了,那么之前的努力就全部白费了。碰到项目紧急的时候,你就算007都不一定来得及了。

git或者svn这样的软件来管理代码,一方面可以防止数据丢失,另一方面可以在程序出现错误的时候方便数据回滚。

以上就是今天要分享的内容了!

标签:10,int,代码,编程,程序员,文档,命名,void
From: https://www.cnblogs.com/Wayne123/p/18127983

相关文章

  • 20240410,结构体,通讯录管理系统
    感觉学到现在就是,基础的听了好多遍敲了很多次熟的不得了,但是一开始就没学学会的一直没研究,学会了但是没复习,和新学的没重叠的也忘了,难顶一,结构体属于用户自定义的数据类型,STRUCT类型名称{成员列表}#include<stdio.h>//听男神讲C的时候没有做过这种练习,C也是可以成员不......
  • 2024/4/10
    今天并没有迎来证券的抵抗,白酒、证券、地产依然毫无抵抗的下跌,银行冲高回落以后今天也是跌跌不休,反倒是工程机械板块收红短线上今天炸板率极高,两市4000多股票下跌昨天预测的支撑位反弹并没有来临,反而很多个股跌破支撑,加速下跌,比如北斗星通,青岛啤酒,所以做支撑位的左侧可能并不是......
  • 最优算法100例之38-构建乘积数组
    专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html题目描述给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用......
  • STM32 HAL库F103系列之OLED显示一个字符
    原理图:OLED对应IO口OLED_CS对应OV_WRST,即:PD6;OLED_RS对应OV_SCL,即:PD3,高电平为命令,低电平为数据;OLED_WR对应OV_RRST,即:PG14;OLED_RD对应DCMI_SDA,即:PG13;OLED_RST对应DCMI_RESET,即:PG15;OLED_D[7:0]对应DCMI_D[7:0],即:PC[7:0]配置步骤:1,确定IO连接关系        开发......
  • 2024年3月电子学会青少年软件编程 中小学生Python编程等级考试一级真题解析(判断题)
    2024年3月Python编程等级考试一级真题解析判断题(共10题,每题2分,共20分)26、turtle画布的坐标系原点是在画布的左上角答案:错考点分析:考查turtle相关知识,turtle画布坐标系是在画布的中点,答案错误27、Python变量名区分大小写,book和BOOK不是同一个变量答案:对考点分析:考查......
  • CF1040B Shashlik Cooking 题解
    题面。看到这道题的第一眼,就想到用分块思想来解决。思路我们知道,当对任意一个\(i\)进行翻转时,区间\([i-k,i+k]\)内的所有元素都会翻转,每次翻转的总个数为\(2\timesk+1\)。因此,我们可以将所有烤串分成长度为\(len=2\timesk+1\)的\(block=n\divlen\)块,用数组\(L......
  • 并发编程之AtomicInteger,AtomicLong,LongAdder
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。AtomicInteger类是系统底层保护的int类型,通过提供执行方法的控制进行......
  • 【异常】FATAL ERROR in native method: JDWP loaded classes, jvmtiError=JVMTI_ERRO
    一、异常内容IDEA启动微服务之后,提示FATALERRORinnativemethod:JDWPloadedclasses,jvmtiError=JVMTI_ERROR_OUT_OF_MEMORY(110)FATALERRORinnativemethod:JDWPloadedclasses,jvmtiError=JVMTI_ERROR_OUT_OF_MEMORY(110) atsun.misc.Unsafe.defineAnonym......
  • 【华为笔试题汇总】2024-04-10-华为春招笔试题-三语言题解(Python/Java/Cpp)
    ......
  • 【Linux系统编程】libevent库事件驱动
    libevent库事件驱动libevent库使用创建并初始化event_base结构体。创建并初始化event结构体,并设置文件描述符、监听事件、回调函数、回调函数参数。将event添加到event_base中。开始事件处理循环,监听事件是否发生,并在满足条件时自动调用回调函数。事件处理完成后,释放event......