程序员成长之路心得篇——高效编码诀窍

随着AIGC的飞速发展,程序员越来越能够感受到外界和自己的压力。如何能够在AI蓬勃发展的时代不至于落后,不至于被替代?项目的开发效率起了至关重要的作用。

首先提出几个问题:

  1. 如何实现高效编程?
  2. 高效编程的核心在于哪里?

1. 如何实现高效编程?

1) 积累编程的经验,提升对公司开发架构的认知

现在让我们设想一下这个场景:
你的上级要求你在3天之内完成一个项目,这个项目不算容易实现,需要用到定时任务框架、消息推送和excel导入导出功能。如果你是一名初级程序员或者刚入职不久的新员工,这个工作可能会有点困难,作为初级程序员的你缺少开发经验,而作为刚入职不久的员工,你缺少对公司架构的了解。那么我们应该怎么做呢?

没错,要想实现高效编程,我们首先需要积累编程的经验,提升对公司开发架构与系统的认知。积累编程的经验,不仅仅是多写代码,还应该提升问题的处置能力,避免两次踩在同一个坑里。

针对初级程序员或入行不久的新员工而言,和经验丰富的同事一同开发项目可以快速增长问题处理能力,也就是所谓的带教。在带教过程中,遇到问题相互讨论,形成良好的技术探讨氛围也会起到较好的提升作用;而针对中级程序员或者更为高级的程序员而言,则需要在问题处理中逐步形成自己的“体系”,每次遇到错误或者问题就依照自己的体系去排查问题,并在处理完成后及时更新自己的错误数据集。

2) 实现代码的重用

现在让我们设想一下另一个场景:
我们每天都在写代码,但是效率却并没有因此而提高,并且随着项目的增多,反而增加了我们代码量和编码压力。如何处理这些冗长复杂的代码,既可以减轻我们的编码负担,也可以提升代码质量呢?

要想实现高效编程,进阶的方式就是实现代码的重用。我们也许听说过一则趣味小故事,一个程序员很喜欢随身携带一个u盘,里面记录了他所有开发过的项目,但是有一天,他遗失了他那宝贵的u盘,他便自叹自己的职业生涯到头了。

当时看到这个故事我的第一反应是,这个程序员起码不是个菜鸟,他会把自己的代码保存并且复用,方便后续系统的开发。而现实是很多的程序员并没有做到这一点,他们可能整天写着增删改查,活在自己的舒适圈里,自认为自己“勤快”,却从没想过“偷懒”。

那么,如何实现代码重用呢?

作为一名经验较为丰富的java开发工程师,我会首先想到利用反射、注解、泛型、枚举和设计模式等工具去进行代码功能的构建。比如说最简单的检验数据是否为空,我会先编一个注解.

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NotBlank {
    String message() default "参数不能为空";
}

然后利用反射获取某一个类及其父类中的所有DeclaredFields,也就是所有的成员变量,包括私有的,然后获取里面加了注解的变量,检查是否为空,为空就抛异常。

/**
 * 实体工具类
 * @author zyl
 */
@Slf4j
public class EntityUtils {

    public static <T> boolean verifyIsEmpty(T entity) {
        if (entity == null) {
            throw new MyException("实体类为空");
        }
        try {
            Class<?> cls = entity.getClass();
            String clsName = cls.getSimpleName();
            while (!"Object".equalsIgnoreCase(clsName.trim())) {
                Field[] fields = cls.getDeclaredFields();
                for (Field f : fields) {
                    f.setAccessible(true);
                    NotBlank anno = f.getAnnotation(NotBlank.class);
                    if (anno != null) {
                        Object obj = f.get(entity);
                        if (obj == null || "".equals(obj)) {
                            throw new MyException(anno.message());
                        }
                        if (obj instanceof List && ((List) obj).isEmpty()) {
                            throw new MyException(anno.message());
                        }
                        String str = String.valueOf(obj);
                        if (str.isEmpty()) {
                            throw new MyException(anno.message());
                        }
                    }
                }
                cls = cls.getSuperclass();
                clsName = cls.getSimpleName();
            }
            return false;
        } catch (Exception ex) {
            log.error(ex.getMessage());
            throw new MyException(ex.getMessage());
        }
    }
}

如果想不到用这种方式,也可以退而求其次,使用spring自带的@NotBlank注解实现以上功能。

代码重用的第二种途径就是组件的编写。这个对于编程能力有一定的要求,比如设计模式,比如对于组件整体功能的把握等。但一旦学会了组件的封装和使用,那么对于一般的业务系统开发而言,效率将会大幅提高。打个比方,将木头加工成轮子是麻烦的,但是由轮子组装成车架却变得简单了。
在这里插入图片描述
更高阶的就是自己实现代码生成器,也就是自己写一套代码生成框架。这个可太难了,哈哈。不过好在市场上已经有了较为成熟的代码生成工具,如阿里的宜搭,百度的爱速搭等。

高效编程的核心

  1. 重复的事情标准化,标准的事情自动化。一昧努力不可取,有时候偷懒才是王道。
  2. 积累经验,保持虚心学习的态度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

zygswo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值