自己写过比较蠢的代码:从失败中学习的经验

文章目录

    • 引言
    • 1. 代码没有注释
    • 2. 长函数和复杂逻辑
    • 3. 不恰当的变量名
    • 4. 重复的代码
    • 5. 不适当的异常处理
    • 6. 硬编码的敏感信息
    • 7. 没有单元测试
    • 结论

在这里插入图片描述

🎉 自己写过比较蠢的代码:从失败中学习的经验


  • ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
  • ✨博客主页:IT·陈寒的博客
  • 🎈该系列文章专栏:Java面试技巧
  • 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
  • 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
  • 📜 欢迎大家关注! ❤️

引言

每个程序员都有自己的代码库,里面充满了各种各样的代码:有些是优雅的、高效的,而有些则可能令人尴尬和低效。在编写软件的过程中,我们都曾经写过令人不满意的代码。本文将分享一些自己写过的比较蠢的代码,以及从中学到的宝贵经验。通过这些失败的案例,我们可以更好地理解如何编写更好的代码。

在这里插入图片描述

1. 代码没有注释

# 函数功能:实现某种操作
def func():# 以下代码实现某种操作...

这段代码实际上并没有提供任何有用的信息。没有注释,别人无法理解这个函数的目的和如何使用它。

在这里插入图片描述

经验教训:良好的注释是代码的一部分,它们可以提高代码的可读性和可维护性。编写清晰的注释,以解释代码的目的、输入和输出。

如何避免:编写有意义的注释,包括函数的用途、参数的含义以及返回值的描述。这样,其他开发人员可以更容易地理解和使用你的代码。

2. 长函数和复杂逻辑

public void doSomething() {// 大约数百行的代码...
}

这个函数包含了大量的代码,难以理解和维护。

在这里插入图片描述

经验教训:拆分长函数为小的、可重用的函数,每个函数执行一个特定的任务。这有助于提高代码的可读性和维护性。

如何避免:将长函数拆分为多个小函数,每个小函数执行一个特定的子任务。这不仅使代码更易于理解,还使单元测试更容易编写。

3. 不恰当的变量名

let a = 10;
let b = 20;
let c = a + b;

使用像abc这样的变量名不是一个好习惯。它们不提供任何有关变量用途的信息。

在这里插入图片描述

经验教训:使用有意义的变量名,可以让你的代码更易于理解。例如,使用total代替c

如何避免:选择描述性的变量名,以反映变量的用途和含义。这有助于提高代码的可读性。

4. 重复的代码

def calculate_area_of_circle(radius):return 3.14 * radius * radiusdef calculate_area_of_sphere(radius):return 4 * 3.14 * radius * radiusdef calculate_volume_of_sphere(radius):return (4/3) * 3.14 * radius * radius * radius

这里有很多重复的代码,每个函数都包含了相似的计算。

在这里插入图片描述

经验教训:使用函数来避免重复代码。在这种情况下,你可以创建一个单独的函数来计算圆柱体的表面积和体积,然后在需要时调用它。

如何避免:查找和标记代码中的重复部分,然后将它们提取到单独的函数或方法中。这不仅减少了代码的冗余,还使维护更容易。

5. 不适当的异常处理

try {// 可能引发异常的代码...
} catch (Exception e) {// 空的异常处理块
}

这种情况下,异常被捕获,但什么也不做,这可能会导致潜在的错误被忽略。

在这里插入图片描述

经验教训:在捕获异常时,要确保适当地处理它们。这可能包括记录错误、回滚操作或者向用户报告问题。

如何避免:在捕获异常时,考虑如何处理异常情况。根据异常的类型,采取适当的行动,而不是简单地忽略它们。

6. 硬编码的敏感信息

db_connection = pymysql.connect(host='localhost',user='root',password='password',database='mydb'
)

将敏感信息(如数据库密码)硬编码在代码中是不安全的。

在这里插入图片描述

经验教训:使用配置文件或环境变量来存储敏感信息,并从中读取。这有助于提高安全性,并简化了配置管理。

如何避免:将敏感信息存储在安全的位置,例如环境变量、配置文件或密钥管理服务中。不要在代码中直接硬编码这些信息。

7. 没有单元测试

没有单元测试的代码可能会导致难以调试和维护的问题。

在这里插入图片描述

经验教训:编写单元测试来验证代码的功能。这可以帮助你捕获潜在的问题,并确保代码在不断变化的环境中仍然正常工作。

如何避免:在编写代码的同时,编写相应的单元测试。这样可以确保代码的正确性,并及早捕获问题。

结论

在这里插入图片描述

自己写过的蠢代码是每个程序员成长的一部分。关键在于从失败中学习,并不断改进自己的编码技能。通过识别和纠正这些常见的错误,你可以编写更干净、更可维护的代码,提高自己的开发水平。记住,编码是一个不断学习和改进的过程。


🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:

  • 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
  • 【Java学习路线】2023年完整版Java学习路线图
  • 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
  • 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

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

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

相关文章

【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码

目录 1 值热力图(Value Heatmap): 2 密度热力图(Density Heatmap) 3 时间热力图(Time Heatmap): 4 空间热力图(Spatial Heatmap) 5 渐变热力图(Gradient Heatmap&am…

红黑树Java实现

文章目录 红黑树1. 概念性质2. 红黑树节点定义3. 红黑树的插入情况1情况2情况3其它细节问题插入代码实现 4. 红黑树的验证5.性能分析 红黑树 1. 概念性质 红黑树也是一种二插搜索树,每一个节点上比普通二插搜索树都增加了一个存储位置表示节点的颜色,可…

Foxit PDF SDK Windows 9.1 Crack

Foxit PDF SDK 变更日志 Windows/Linux/Mac 2023 年 8 月 新功能/增强功能 在开始签名之前设置外观。支持使用共享字典添加签名。允许在调用 Signature::StartSign() 之前增量保存文档。在签名前修改现有未签名分页印章签名的外观。支持使用共享字典添加分页签名。忽略全角…

FPGA的主流技术与市场表现方面的调研报告

撰写简单的FPGA的主流技术与市场表现方面的调研报告,表达自己的认知和发展展望,500字,图片,表格除外 FPGA简介 FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,是在PAL &#xff08…

【软件测试】测试中的风险有哪些?

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) ​那么到底都有哪些风险要注意呢?如何解决呢?另外这些风险如何在计划中写明呢,不会写“张三…

苏宁滑块验证

网址:https://passport.suning.com/ids/login总结一下,别被他的表面现象给骗了,这玩意儿,个人认为,腾讯的都没法跟他比!!! 难点:动态混淆,vmp,图片…

Django — 配置和路由

目录 一、项目的配置二、静态文件的配置三、路由1、概述2、代码实现2.1、后台管理页面2.2、子应用自定义页面2.3、子路由 3、路由解析顺序3.1、请求到达 Django 应用程序3.2、Django 根据 URL 路径查找匹配的路由3.3、第一个匹配的 URL 模式被选中3.4、相关联的视图函数被调用3…

Java由浅入深理解线程池设计和原理

目录 1 线程1.1 什么是线程?什么是进程?1.2 java中线程的实现方式有几种?1.3 线程的生命周期是什么? 2 线程存在的问题2.1 一个线程只能执行一个任务2.2 线程执行完后销毁,无法复用2.3 线程过多,导致JVM宕机 3 初识线程池3.1 了解J.U.C3.2 线…

追光者的梦

追光者的梦 鸿蒙中我茫然于世,你是钻入我心里的那束光 我所有的梦想都是和你热烈的拥抱 没有追到你时,我一直在路上 追到你时,我的人生就被你点燃 ——致所有的追光者 合肥先进光源国家重大科技基础设施项目及配套工程启动会刚开过&…

【matlab程序】海图单位的度分格式

【matlab程序】海图单位的度分格式 海洋与大气科学 点击蓝字 关注我们 思路来源 阅读文献: 文献中图片的横纵坐标出现半分画法: 半分画法,甚至更为精细的坐标轴在小区域研究中更为重要。 图片 图片 01 一度间隔 图片 代码 % 01 运…

2023 第十二届中国智能产业高峰论坛 - 文档大模型的未来展望

目录 前言文档图像分析识别与理解中的技术挑战 文档图像分析识别与理解的研究主题文档图像分析与预处理文档解析与识别版面分析与还原文档信息抽取与理解AI安全知识化&存储检索和管理 多模态大模型在文档图像处理中的应用多模态的GPT-4在文档图像上的表现多模态的Google Ba…

基因组注释(Annotation)

基因组组装完成后,或者是完成了草图,就不可避免遇到一个问题,需要对基因组序列进行注释。注释之前首先得构建基因模型,有三种策略: 从头注释(de novo prediction):通过已有的概率模型来预测基因结构&#…

Java实验案例(一)

目录 案例一:买飞机票 案例二:开发验证码 案例三:评委打分 案例四:数字加密 案例五:数组拷贝 案例六:抢红包 案例七:找素数的三种方法 案例八:打印乘法口诀表 案例九&#x…

大厂面试-16道面试题

1 java集合类有哪些? List是有序的Collection,使用此接口能够精确的控制每个元素的插入位置,用户能根据索引访问List中元素。常用的实现List的类有LinkedList,ArrayList,Vector,Stack。 ArrayList是容量…

某度sign参数逆向

文章目录 前文分析完整代码结尾 前文 本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 分析 经过我们几次抓包,测试&#xf…

解决jupyter打开的默认路径问题

已经安装完anaconda,但是jupyter每一次打开的路径都不是自己想要的路径,可以在配置文件中修改jupyter打开的默认路径,具体步骤如下: 首先打开anaconda的命令行 如果有多个环境的,需要输入conda activate 环境名称以下命…

list容器排序案例

案例描述:将Perspn自定义数据类型进行排序&#xff0c;Person中属性有姓名、年龄、身高 排序规则:按照年龄进行升序&#xff0c;如果年龄相同按照身高进行降序 代码示例 #include <iostream> #include <string.h> #include <iterator> #include <vector…

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例&#xff1a;委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例&#xff1a;委托 继承【观察者模式】 13.委托相关设计 问题…

云原生安全性:保护现代应用免受威胁

文章目录 引言云原生安全性的挑战云原生安全性的关键实践1. 安全的镜像构建2. 网络策略3. 漏洞扫描和漏洞管理4. 认证和授权5. 日志和监控 云原生安全工具结论 &#x1f389;欢迎来到云计算技术应用专栏~云原生安全性&#xff1a;保护现代应用免受威胁 ☆* o(≧▽≦)o *☆嗨~我…

科目二倒车入库

调整座位和后视镜 离合踩到底大腿小腿成130-140 上半身90-100 座椅高度能看到前方全部情况 后视镜调节到能看到后门把手&#xff0c;且后门把手刚好在后视镜上方边缘、离车1/3处。 保持直线&#xff1a; 前进&#xff1a; 车仪表盘中央的原点和地面上的黄线擦边&#xff…