【工作思考】如何提升自己的编程能力?

news2025/1/15 16:53:01

文章目录

  • 前言
  • 一、代码评审
    • 为什么要进行代码评审?
  • 二、持续学习能力
  • 三、良好的编程习惯
    • 代码注释
    • 避免深度嵌套
    • 拒绝长函数
    • 重视自测
    • 文档编写
    • 重构你的代码
    • 学会思考
  • 四、多接触开源项目
  • 五、总结

前言

在工作中,我们大部分的时间都是在阅读代码,阅读别人的代码也是我们工作中的一部分,真正花在写代码上的时间其实并不多。

我们应该都有这样的体会,那就是刚入职一家新公司,需要维护公司的一些项目代码,这个时候相信有的小伙伴们就很痛苦了,因为每个人写代码的风格和编码水平都是不一样的,好的代码更容易理解和易读。

工作中,能很快熟悉别人的代码,可以提升我们工作的效率,那么怎样才能提高代码质量以及可读性呢?

一、代码评审

为什么要进行代码评审?

  1. 提高质量
  2. 及早发现潜在缺陷与 BUG,降低事故成本。
  3. 促进团队内部知识共享,提高团队整体水平
  4. 评审过程对于评审人员来说,也是一种思路重构的过程。帮助更多的人理解系统。

我觉得代码评审还是非常有必要的,自己的代码被别人评审的时候,我们要保持一颗虚心的态度,认真倾听他人对自己代码的一些建议,虚心请教,这样我们会更容易突破自己的瓶颈,编码的质量会更上一个台阶。

每天抽出一个小时,团队里每个人都对其他人的代码进行评审也是非常好的,不仅可以找到各自身上写代码的缺陷和毛病,还可以学习别人写代码的优点。毕竟评审过程对于评审人员来说,也是一种思路重构的过程

二、持续学习能力

终身学习对程序员也非常重要,这个行业新技术日新月异,曾经C++还风靡全球,今天就换Java横扫千军,Python、node.js、Go这些新兴的语言也层出不穷。这意味着程序员要不断学习新东西,很难一招鲜吃遍天。

面对如此多的技术,我认为最重要的还是要牢固计算机体系基础知识,这个是编程的内功心法,如果不扎实一定很难走远。计算机体系基础知识包括算法和数据结构、操作系统、计算机网络、编译原理、计算机组成原理、数据库等等。

三、良好的编程习惯

其实在工作中,看别人的代码大概就知道他的编码水平。养成良好的编程习惯,对你无论是工作还是技术发展本身都有极大的帮助,这能提高你代码的可读性,可扩展性和整体质量,也能提高你同事的工作效率。

代码注释

代码在任何地方都没有注释。没有函数的功能注释,没有类的使用概述,没有对算法的解释等等。
即使是写的最好的代码也不如注释更容易被理解。在写注释的时候,要记住你的目的是为解释代码块为什么存在,而不是解释代码块在做什么。注释能帮助你更好的理解自己和他人的代码,减少工作量,所以不要忽视他们。

避免深度嵌套

深度嵌套的代码并不总是很糟糕,但可能会产生问题,因为它很难理解,如果你发现自己正在编写一个双重,三重甚至四重for循环,那么代码将可能试图在超出自身的范围外查找数据。那么你应该提供一种方法,使之可以通过包含该数据的对象或模块函数调用来请求数据。

拒绝长函数

顾名思义,长函数是指函数太长了。虽然没有一个特定的数字表示多少行代码对于一个函数来说“太长”,但当你看到这个函数时,你就会知道它是不是太长。一个长函数意味着包含了太多的功能实现。一般情况下长函数应该被分解成许多子函数,其中每个子函数被设计为处理单个任务或问题。理想情况下,原始的长函数将变成一个子函数调用列表,从而使代码更清晰,更易于阅读。

重视自测

交付代码之前反复自测,这样能节省团队时间,也能减少线上bug。

文档编写

Java程序员不仅要掌握一定的技术能力,还需要具有一定的文档编写能力。良好的文档能力能帮助我们更好地进行开发。一般来说,软件项目的发展需要经过需求调研,概要设计,详细设计等一系列的步骤,这些都是编码前的准备工作,特别是大项目会把大部分时间都花在文档整理上。

重构你的代码

  • 重构能改善软件设计。
  • 重构使软件更易理解。
  • 重构有助于找到Bug。
  • 重构有助于提高编程速度。

在写代码的过程中不断重构,优化,你的代码质量就会逐步提高。

学会思考

工作中,总是有很多新的需求,遇到新的需求,不要急于上手写代码。
编码之前需要思考以下几点:

  • 明确需求,我要做什么?
  • 分析思路,我要怎么做?
  • 确定步骤,每一个思路部分用到哪些语句、方法和对象。
  • 代码实现。

四、多接触开源项目

GitHub是全球最大的开源社区,里面充斥着形形色色的大佬,如果你身边没有高级工程师来带你提升,那这个社区绝对是最佳的选择,阅读别人的代码,学习代码风格。

  • 其实,作为一名程序员,我们都希望能写出高质量的代码,我自己也在朝这个方向努力。

  • 既然选择了做IT,就要明白,程序员从来不适合语言上的巨人,行动上的小人。

  • 只有真正地付出实践,从问题中复盘经验,才能使自己的编程水平不断提高。

五、总结

提高代码能力需要不断的学习、实践和反思。作为程序员,应该保持对技术的持续关注,不断学习新的编程语言、框架和工具,并积累项目经验,不断提升自己的编程技能和工程实践。同时,也需要注重代码质量和可维护性,学会与团队合作、项目管理、沟通等软技能,不断提升自己的全面素质。通过不断反思和改进,总结项目经验,接受他人的反馈和批评,学习他人的经验,不断完善自己的编程方式和实践,从而不断提高自己的代码能力。

在提高代码能力的过程中,也需要保持耐心和毅力。编程是一个持续学习和不断进步的过程,不可能一蹴而就。因此,要保持积极的学习态度和持续的努力,不断克服遇到的困难和挑战,不断提升自己的代码能力。

总的来说,提高代码能力需要多方面的努力。从技术学习、实践项目、拓宽领域、提升软技能、反思改进等多个层面入手,不断追求卓越,并持之以恒地不断提升自己的代码能力。只有不断自我挑战,不断改进和提高,才能在竞争激烈的编程领域中脱颖而出,成为一名优秀的工程师。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/435734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CF204A-Little Elephant and Interval(数位)

CF204A-Little Elephant and Interval 考虑 [ 1 , a b c d e ‾ ] [1,\overline{abcde}] [1,abcde] 的情况: 位置集合数量个位1 ~ 99十位11 ~ 999百位 { x u x ‾ ∣ x ∈ [ 1 , 9 ] , u ∈ [ 0 , 9 ] } \{\overline{xux} | x\in [1,9],u\in [0,9]\} {xux∣x∈[1…

基于Yolov5的二维码QR码识别

1.QR code介绍 一个 QR 码可以分为两个部分:功能图形和编码区域。 数据集 大小10,85张 1.1 通过split_train_val.py得到trainval.txt、val.txt、test.txt # coding:utf-8import os import random import argparseparser argparse.ArgumentParser() #xml文件的地…

设计模式-结构型模式之代理模式

6. 代理模式 6.1. 模式动机 在某些情况下,一个客户不想或者不能直接引用一个对 象,此时可以通过一个称之为“代理”的第三者来实现 间接引用。代理对象可以在客户端和目标对象之间起到 中介的作用,并且可以通过代理对象去掉客户不能看到 的内…

江苏专转本盐城工学院管理学章节习题

江苏专转本盐城工学院管理学章节习题第一章 管理活动与管理理论 一、单项选择题 1.企业在销售产品时,需要预估货款回收的可能性。为此,信用审核部门力图以一种低成本的方式处理有关客户资信的材料,但因为过程速度太慢,使许多客户另求他处购货。该项信用审核工作可…

Power Automate实现自动填充Word

创建Word模板 1、创建一个Word,按需求写好内容 2、在需要填充的地方插入开发工具-纯文本内容控件 3、编辑控件属性,用于Power Automate中区分字段 4、模板完成后上传至Sharepoint站点中 创建Forms 也可使用Sharepoint列表作申请单,这步就…

实战:快速实现iOS应用中集成即时通讯IM和UI

准备 熟练objective-c语言 有一台mac电脑,并安装了xcode 和 cocoapods 目标 手把手教大家在iOS应用中集成即时通讯IM 功能 内容篇幅较长,需要内心平和耐心看下去,务必戒躁.阅读本文并按照本文进行对接预计时长2小时 注册Appkey和username 本教程以集成环信IM为例 注册环信…

SpringBoot 整合 ES (四十二)

我看到希望,哪怕只有微小的一束光,我也会拼尽全力去寻找 上一章简单介绍了 SpringBoot 整合 RabbitMQ (四十一), 如果没有看过,请观看上一章 ES 相应的教程,可以看老蝴蝶之前写的文章: https://blog.csdn.net/yjltx1234csdn/category_122775…

Java 基础常识

一、Java运行机制 1.Java运行原理 编译:.java(源代码) ---> .class(字节码) 解释:.class(字节码) ---> 加载并启动JVM(类加载) ---> .class(机器指令) 执行:通过JVM来完成运行输出 2.Java运行过程 利用 javac 编译 .java 文件 利…

欧姆龙CP1H系列PLC通讯扩展与数据采集

一、应用场景 纺织厂的粗纱机,控制系统由1台欧姆龙CP1H的PLC和1台昆仑通泰MCGS的触摸屏组成,触摸屏连接到PLC通讯扩展的接口CP1W-CIF01(RS232串行通讯)。现在MES管理系统,需要采集设备的数据,要求不改变原来…

【详解C++中的引用】

文章目录 一、什么是引用二、引用规则三、引用特性四、使用场景1.做函数参数2.做返回值五、常引用 ps:为什么类型转换会产生临时变量? 六、引用和指针的区别总结 一、什么是引用 引用就是给一个变量取别名。 注意:这个引用不会新开辟一块空…

微信小程序自定义组件:组件间通讯

前言 略 组件间通信 组件间的基本通信方式有以下几种: WXML 数据绑定:用于父组件向子组件的指定属性设置数据,仅能设置 JSON 兼容数据(自基础库版本 2.0.9 开始,还可以在数据中包含函数)。具体在 组件模…

Mybatis-plus 两种分页方法(分单表和联表)

mybatis-plus分别使用 一、PageHelper插件分页使用 准备1&#xff1a;引入PageHelper依赖 <!-- pagehelper 分页插件 --><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId>…

面试高频代码题

文章目录 链表1.删除有序链表中的重复链表2.删除有序链表的重复数组并只保留只出现过一次的结点3. 无序单链表升序排列 数组1. 冒泡排序2. 折半查找3. 快排4.给1001个数&#xff0c;有一个是重复的&#xff0c;如何不使用额外空间找出来这个数&#xff1f;&#xff08;微软&…

智能文案改写工具-智能改写工具免费

智能写作机器人 智能写作机器人&#xff0c;这是一种让人类写作变得更加简单的创新技术。它的出现&#xff0c;为内容生产领域带来了巨大的进步&#xff0c;不仅提高了人们的写作效率&#xff0c;还让优质的内容更容易被产生和共享。现在&#xff0c;让我们来了解一下智能写作…

Spring Security --- formLogin配置

目录 环境准备 配置自定义登录表单页面 配置登录成功的跳转页面方式 配置登录失败的跳转页面方式 前端表单参数获取 CustomWebSecurityConfigurerAdapter配置类代码示例 环境准备 创建springboot项目引入spring security框架引入thymeleaf模板引擎 配置自定义登录表单页面…

TryHackMe-Year of the Pig(Linux渗透测试)

Year of the Pig 有些猪会飞&#xff0c;有些有故事要讲。开始吧&#xff01; 端口扫描 循例nmap Web枚举 进入80 gobuster扫 进到/admin&#xff0c;尝试弱口令&#xff0c;给出了密码提示 密码本身的一些很简单的单词&#xff0c;密码的后三位是两位数字加一个特殊字符 我…

Flask(Jinja2)服务端模板注入漏洞(SSTI)整理

整理一下Flask框架下的SSTI漏洞相关知识&#xff1a; 漏洞原理 Flask是一个很常用的python框架&#xff0c;其中存在SSTI漏洞。 SSTI&#xff0c;服务端模板注入&#xff0c;很早就知道这个东西&#xff0c;但没有仔细整理过&#xff0c;作为一种注入漏洞&#xff0c;简单说…

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数

LeetCode算法小抄-- 最近公共祖先 和 完全二叉树的节点个数 最近公共祖先[236. 二叉树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-binary-tree/)[235. 二叉搜索树的最近公共祖先](https://leetcode.cn/problems/lowest-common-ancestor-of-a-b…

redis单机最大并发量

redis单机最大并发量 布隆过滤器多级缓存客户端缓存应用层缓存Expires和Cache-Control的区别Nginx缓存管理 服务层缓存进程内缓存进程外缓存 缓存数据一致性问题的解决引入多级缓存设计的时刻 Redis的速度非常的快,单机的Redis就可以⽀撑 每秒十几万的并发,相对于MySQL来说,性…

Linux中将Python2升到Python3

目录 1、安装依赖包 2、下载python3 方式一 方式二 3.解压文件 4.安装 5.建立软连接 1、安装依赖包 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-dev…