提高代码可读性的秘诀:注释的重要性

简介: A:你写代码怎么连注释都不加?B:老大为什么要加注释?A:你不加注释,你怎么知道我能看懂你的代码?B:遇到问题你找到就可以了啊?A:那你哪天生病了请假了闹情绪了离职了,公司怎么办?B:我现在反正没觉得有什么问题,我对公司也很满意,安心啦!又是00后整顿职场的一段精彩演绎。不可置否,在实际的软件开发过程中,确实有很多开发人员依然不愿意写注释认为这会浪费时间,或者自认为他们的代码足够清晰,不需要额外的解释。但这种想法too young too simple,代码注释对于项目的质量和效率有着深远的影响,在软件开发中的重要性不容小觑。

A:你写代码怎么连注释都不加?
B:老大为什么要加注释?
A:你不加注释,你怎么知道我能看懂你的代码?
B:遇到问题你找到就可以了啊?
A:那你哪天生病了请假了闹情绪了离职了,公司怎么办?
B:我现在反正没觉得有什么问题,我对公司也很满意,安心啦!

又是00后整顿职场的一段精彩演绎。不可置否,在实际的软件开发过程中,确实有很多开发人员依然不愿意写注释认为这会浪费时间,或者自认为他们的代码足够清晰,不需要额外的解释。但这种想法too young too simple,代码注释对于项目的质量和效率有着深远的影响,在软件开发中的重要性不容小觑。

1、 提高代码可读性
良好的注释可以帮助其他开发人员更好地理解代码的逻辑和功能。当你或其他人需要阅读代码时,可以通过阅读注释来快速理解代码的作用和目的。这有助于提高代码的可读性和可维护性。
2、 代码文档化
注释可以作为代码的文档,提供关于代码的详细信息,包括函数的作用、参数的用途以及函数的返回值等。这些信息对于其他开发人员和自己在未来回顾代码时非常有用,可以避免重新阅读和理解代码的时间和精力。
3、 代码质量和错误排查
适当的注释可以帮助发现代码中的问题,如逻辑错误、拼写错误等。当其他开发人员或自己在阅读代码时,如果发现与注释不一致的代码行为或逻辑,就可以及时进行修正,从而提高代码质量。
4、 提高开发效率
编写注释的时间实际上是投资。虽然编写注释似乎会减缓开发速度,但实际上,通过注释,可以节省大量时间。通过快速理解代码的功能和逻辑,可以更快地开展工作,提高开发效率。
5、 团队合作和知识共享
在团队开发中,注释是知识共享的重要工具。团队成员可以通过阅读注释来了解其他成员的工作思路和实现方法。这有助于团队成员之间的沟通和协作,提高团队合作的效率。
充分认识到注释的重要性,但是迫于交付时间的压力,以及部分开发人员的能力边界问题,如何编写清晰、有用的注释,无从下手。而随着AI技术的发展,很多代码辅助工具在一定程度上很好的解决了这个问题。

以智能开发工具飞算SoFlu软件机器人推出的函数AI生成器—FuncGPT(慧函数)为例,作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。包含清晰的代码注释,帮助开发工程师理解函数的用途和输入输出。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。

以通过FuncGPT(慧函数)生成的”BigDecimal的表达式运算”为例:

// 类名:BigDecimalCalculator
// 函数名:calculateExpression
// 函数功能:使用BigDecimal计算表达式的结果
// POM依赖包:
// <dependency>
//     <groupId>org.apache.commons</groupId>
//     <artifactId>commons-lang3</artifactId>
//     <version>3.12.0</version>
// </dependency>

import org.apache.commons.lang3.StringUtils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Stack;

public class BigDecimalCalculator {
    /**
     * 使用BigDecimal计算表达式的结果
     * @param expression 要计算的表达式
     * @return 计算结果
     */
    public static BigDecimal calculateExpression(String expression) {
        if (StringUtils.isBlank(expression)) {
            throw new IllegalArgumentException("Expression cannot be blank");
        }

        Stack<BigDecimal> numberStack = new Stack<>();
        Stack<Character> operatorStack = new Stack<>();

        for (int i = 0; i < expression.length(); i++) {
            char ch = expression.charAt(i);
            if (Character.isDigit(ch)) {
                StringBuilder sb = new StringBuilder();
                while (i < expression.length() && (Character.isDigit(expression.charAt(i)) || expression.charAt(i) == '.')) {
                    sb.append(expression.charAt(i));
                    i++;
                }
                i--;

                BigDecimal number = new BigDecimal(sb.toString());
                numberStack.push(number);
            } else if (ch == '(') {
                operatorStack.push(ch);
            } else if (ch == ')') {
                while (!operatorStack.isEmpty() && operatorStack.peek() != '(') {
                    BigDecimal result = performOperation(numberStack, operatorStack);
                    numberStack.push(result);
                }
                if (!operatorStack.isEmpty() && operatorStack.peek() == '(') {
                    operatorStack.pop();
                }
            } else if (isOperator(ch)) {
                while (!operatorStack.isEmpty() && hasHigherPrecedence(ch, operatorStack.peek())) {
                    BigDecimal result = performOperation(numberStack, operatorStack);
                    numberStack.push(result);
                }
                operatorStack.push(ch);
            }
        }

        while (!operatorStack.isEmpty()) {
            BigDecimal result = performOperation(numberStack, operatorStack);
            numberStack.push(result);
        }

        return numberStack.pop();
    }

    private static boolean isOperator(char ch) {
        return ch == '+' || ch == '-' || ch == '*' || ch == '/';
    }

    private static boolean hasHigherPrecedence(char op1, char op2) {
        if ((op1 == '*' || op1 == '/') && (op2 == '+' || op2 == '-')) {
            return true;
        }
        return false;
    }

    private static BigDecimal performOperation(Stack<BigDecimal> numberStack, Stack<Character> operatorStack) {
        BigDecimal num2 = numberStack.pop();
        BigDecimal num1 = numberStack.pop();
        char operator = operatorStack.pop();

        BigDecimal result;
        switch (operator) {
            case '+':
                result = num1.add(num2);
                break;
            case '-':
                result = num1.subtract(num2);
                break;
            case '*':
                result = num1.multiply(num2);
                break;
            case '/':
                result = num1.divide(num2, 2, RoundingMode.HALF_UP);
                break;
            default:
                throw new IllegalArgumentException("Invalid operator");
        }

        return result;
    }
}

// 函数示例
// 使用BigDecimal计算表达式的结果示例
// 入参:expression,要计算的表达式
// 出参:result,计算结果
// 调用示例:
// String expression = "2.5 + 3 * (4 - 1)";
// BigDecimal result = BigDecimalCalculator.calculateExpression(expression);
// System.out.println(result);
// 输出结果:例如,计算表达式"2.5 + 3 * (4 - 1)"的结果为:11.5
// 则输出结果为:11.5

FuncGPT(慧函数)生成的这段函数使用了合理的命名和注释,函数和变量的命名清晰明了,注释对函数的功能和参数进行了说明,提高了代码的可读性。星火大模型评价,“总体来说,这段代码的注释质量较高,能够提供足够的信息供其他开发者理解和使用该类。”
image.png

FuncGPT(慧函数)现免费使用,下载链接:(https://c.suo.nz/d88yp)

相关文章
|
3月前
|
设计模式 算法 前端开发
有什么可以减少注释,但依然能让他人看得懂代码的方法吗?
有什么可以减少注释,但依然能让他人看得懂代码的方法吗?
42 0
|
29天前
|
设计模式 程序员
代码可读性问题之培养和提高团队对代码可读性的重视,如何解决
代码可读性问题之培养和提高团队对代码可读性的重视,如何解决
|
30天前
codereview开发问题之CodeReview中如何判断注释问题如何解决
codereview开发问题之CodeReview中如何判断注释问题如何解决
|
2月前
|
算法 安全 编译器
【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码
【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码
27 1
|
3月前
|
算法 程序员 开发者
探寻代码世界中的独特注释
作为开发者在编程开发中,注释是我们编写的代码中不可或缺的一部分,尽管我们常常强调清晰的代码本身就是最好的文档,但注释依然在软件开发的全生命周期中发挥着不可替代的关键作用,扮演着关键的角色,帮助我们更好地理解和维护代码。而在代码注释的海洋中,有时我们会发现一些独特而富有创意的注释,它们既有幽默感,又蕴含着智慧,或让人会心一笑,或引发深思。有些注释展现了开发者的幽默和创造力,通过有趣的文字让我们在编码过程中轻松一笑;有些注释则引发了思考,激发了我们对更好解决方案的探索和思考;还有些注释融入了文化和历史元素,为代码增添了趣味和人文关怀。代码注释不仅仅是对代码功能的解释,更是程序员与读者之间的沟通桥梁
26 1
探寻代码世界中的独特注释
|
3月前
|
程序员 开发者
欢迎讨论--你见过哪些独特的代码注释
【5月更文挑战第11天】欢迎讨论--你见过哪些独特的代码注释
|
3月前
|
存储 安全 Java
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
12条通用编程原则✨全面提升Java编码规范性、可读性及性能表现
|
9月前
|
自然语言处理 Java 机器人
从细节出发:提高你的代码可读性
在编程的世界中,我们总是不断追求更高的性能,更优雅的设计,以及更复杂的特性。然而,我们不应忽视一个基本且重要的原则——代码的可读性。那么究竟何谓代码的可读性?顾名思义,代码可读性是指代码可理解的程度,是代码作者通过代码这个媒介,将需要表达的信息输出到读者脑中的能力。所以有的人说好的代码必然有清晰完整的注释,也有人说代码即注释,是代码简洁之道的最高境界,后者的观点飞哥持保留意见,毕竟真正能够做到代码即注释的有几人呢?
|
3月前
|
设计模式 算法 程序员
如何写出好的代码注释?
作为程序员,想必大家在日常开发中必写注释,而且在软件开发过程中,给代码写注释是一项至关重要的工作,也是一名合格的程序员该具备的编程素养。恰当的注释可以提高代码的可读性和可维护性,方便其他人理解熟悉和修改代码,但是不恰当或过度的注释可能会导致混乱和误导,会起到适得其反的作用。那么本文就来分享一些关于如何正确地给代码写注释的方法和指导原则,并提供一些减少注释但仍能让他人理解代码的方法。
104 3
如何写出好的代码注释?
|
3月前
|
Java
注释之背后:代码的解释者与保护者
注释之背后:代码的解释者与保护者
28 0