【轻松学 C:编程小白的大冒险】--- 15 提高代码可读性的方法

在这里插入图片描述

  • 在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。
  • 而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。


一、变量命名:给变量起个"有身份证"的名字

1、见名知意:让变量自己"开口说话"

  • 想象一下,如果全班50个同学都叫"小明",老师点名得多崩溃!
  • 代码里的变量也一样,用a/b/c就像集体叫"小明",正确做法是让变量名直接表达用途:
  • 年龄用age而非a
  • 学生姓名用student_name而非str1
  • 是否及格用is_pass而非flag

两种主流命名规范

  • 🐫 驼峰命名法(CamelCase):studentAgeisStudentPass(首单词小写,后续首字母大写)
  • 🛠 下划线命名法(snake_case):student_ageis_student_pass(单词用下划线连接)
  • C语言推荐下划线命名法,尤其是Linux内核代码,这可是行业公认的"标准穿搭"!

2、作用域决定名字长度

  • 🌍 全局变量(班长级):职责范围广,名字要详细,如global_student_count
  • 🔦 局部变量(小组级):作用范围小,可适当简短,如循环里的count(但必须保证当前作用域内一目了然)

二、注释:给代码写一本"使用说明书"

  • 新手常犯错误:“我写的代码不需要注释!”
  • 半年后:“这代码怎么和外星文一样?!”
  • 注释是给未来的自己和协作伙伴留的"救命纸条",记住三个黄金原则:
  • ✅ 关键逻辑必注 ✅ 复杂算法必注 ✅ 边界条件必注
  • ❌ 不写废话注释(如// 给a赋值) ❌ 代码更新时同步更新注释

1、单行注释:// 关键时刻的贴心便签

// 计算三科总分(明确说明目的,非简单重复代码)
total_score = math_score + chinese_score + english_score;

2、多行注释:/* 函数的详细简历 */

/*
 * 函数名称:factorial
 * 功能描述:计算n的阶乘
 * 输入参数:n - 非负整数(n<0时返回-1)
 * 返回值:n的阶乘(n=0时返回1)
 */
int factorial(int n) {
    if (n < 0) return -1;
    int result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;  // 循环累乘
    }
    return result;
}

三、代码格式:给代码做一次"美容整形"

1、缩进:让代码结构层次分明

  • 采用4个空格缩进(避免制表符显示不一致),像给代码"排座位":
if (score >= 60) {          // 外层大括号与if对齐
    printf("及格\n");       // 条件成立代码缩进4格
    if (score >= 85) {      // 内层条件语句再缩进4格(共8格)
        printf("优秀\n");
    }
} else {                    // else与if保持同一列
    printf("不及格\n");     // 条件不成立代码缩进4格
}

2、空格:代码的"透气孔"

  • 运算符两侧加空格:a + bi < nif (condition)
  • 函数参数列表:printf("%d\n", sum)(逗号后加空格)
  • 对比案例:
// 错误示范(挤成一团):
if(i<10)sum=a+b;printf("%d",sum);

// 正确示范(清爽易读):
if (i < 10) {
    sum = a + b;  // 运算符两侧空格
}
printf("%d\n", sum);  // 逗号后空格

3、括号对齐:强迫症患者的福音

  • 左右括号保持垂直对齐,快速定位代码块边界:
int main() {            // 函数定义括号对齐
    int i;
    for (i = 0;         // for循环括号对齐
         i < 10;
         i++) {
        if (i % 2 == 0) {  // if括号对齐
            printf("%d是偶数\n", i);
        }
    }
    return 0;
}

四、函数设计:让每个函数成为"专业选手"

1、单一职责原则:一个函数只做一件事

  • ❌ 反例:万能函数(计算+打印+存储)
void calculate_and_print() { /* 包含多个功能 */ }
  • ✅ 正例:职责分离
int calculate_total(int a, int b);   // 专门计算
void print_result(int result);       // 专门打印

2、参数命名:拒绝"匿名参数"

  • 清晰的参数名让调用者一目了然:
// 不好:
int add(int a, int b)
// 好:
int add_student_scores(int math, int chinese)

3、参数解析表(专业版说明)

参数类型参数名称说明示例
输入参数math数学成绩(0-100)90
输入参数chinese语文成绩(0-100)85
输出参数*total总分(通过指针返回)&student_total

五、📝 课后划重点

  1. 变量命名:见名知意,C语言优先下划线命名法
  2. 注释规范:关键逻辑必注,拒绝废话与过时注释
  3. 格式美化:4格缩进+运算符空格+括号对齐
  4. 函数设计:单一职责+清晰参数名

六、🤣 编程冷笑话

  • 为什么程序员总在黑暗里工作?
  • 因为他们怕光(bug)!
  • 冷知识:世界上第一个计算机bug真的是一只掉进继电器的飞蛾🐛

七、✨ 今日金句

“代码首先是写给人看的,其次才是让机器执行的。”
—— 编程界至理名言

内容概要:本文探讨了在微电网优化中如何处理风光能源的不确定性,特别是通过引入机会约束和概率序列的方法。首先介绍了风光能源的随机性和波动性带来的挑战,然后详细解释了机会约束的概念,即在一定概率水平下放松约束条件,从而提高模型灵活性。接着讨论了概率序列的应用,它通过对历史数据分析生成多个可能的风光发电场景及其概率,以此为基础构建优化模型的目标函数和约束条件。文中提供了具体的Matlab代码示例,演示了如何利用CPLEX求解器解决此类优化问题,并强调了参数选择、模型构建、约束添加以及求解过程中应注意的技术细节。此外,还提到了一些实用技巧,如通过调整MIP gap提升求解效率,使用K-means聚类减少场景数量以降低计算复杂度等。 适合人群:从事电力系统研究、微电网设计与运营的专业人士,尤其是那些对风光不确定性建模感兴趣的研究者和技术人员。 使用场景及目标:适用于需要评估和优化含有大量间歇性可再生能源接入的微电网系统,旨在提高系统的经济性和稳定性,确保在面对风光出力波动时仍能维持正常运作。 其他说明:文中提到的方法不仅有助于术研究,也可应用于实际工程项目中,帮助工程师们制定更为稳健的微电网调度计划。同时,文中提供的代码片段可供读者参考并应用于类似的问题情境中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋知叶i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值