目录

  • 一、转载地址
  • 二、转载内容
    • 前言
    • 1.代码没有可读性
    • 2.使用没有上下文的变量名
    • 3.允许安全漏洞
    • 4.拿到需求后立即开始写代码
    • 5.注释太多或太少
    • 6.推送重复和未使用的代码
    • 7.编写低效的数据库查询
    • 8.使用基于错误的条件逻辑
    • 9.提交包含多个功能的代码以供审核
    • 结论

一、转载地址

如何让自己看起来不像编程菜鸟?别犯这9个编程错误 去看看

二、转载内容

前言

  • 在我们刚开始走进IT行业时,写代码总会战战兢兢,不断地向前辈大神请教,经过反复确认之后才敢发布代码,发布代码后也会时不时看后台,会不会产生BUG…

  • 下面我来列举一些我作为一个菜鸟时,经常犯的一些错误,希望能帮助大家及早改正,早日成为编程老鸟。

1.代码没有可读性

写好代码很难,但是理解错误的代码更难。虽然在我们刚入行的时候,这个体现得不是很直观。

下面是我整理的一些关于代码可读性上的关键错误,千万别犯了。

  • 同一行代码上有多个嵌套的 if/else 语句
  • 过度使用链式方法
  • 从堆栈溢出复制/粘贴正则表达式,不带注释
  • 过度抽象

虽然我们应该把逻辑压缩到最小,但这也会让我们的代码变得不可读。即使是一些编程老鸟,在可读性方面也会经常犯错误。

调试代码的难度是编写代码的两倍。因此,如果你花了大量的时间和精力编写了很漂亮但不可读的代码。根据定义,那就是你还不够聪明,无法调试它。–克尼根定律

2.使用没有上下文的变量名

想出好的变量名很难,为了快速完成工作,我们经常起一些事后很难回想起来的变量名。


例如,

  • 用户的姓名写成uln;
  • 很多电子邮箱写成了阵列。

两种做法都不好,这会让很多人理解不了我写的代码,其中就包括我自己。

3.允许安全漏洞

为了让我们的代码免于遭到黑客攻击,我们应该反复检查代码,是否有以下错误操作:

  • 允许SQL注入
  • 允许通过URL跳转访问受限页面
  • 仅使用前端验证
  • 具有增量ID的命名空间URL

在检查安全漏洞时往往会花很多时间来排查漏洞源,我现在在检查其他开发人员的代码时会着重检查以上4项,赶紧回去检查一下自己的代码里有没有这些安全漏洞!

4.拿到需求后立即开始写代码

  • 如果我们这样做了,后果往往是做无用功。花大量的时间在这个功能上,然后发现这个方向就是错误的。

  • 对于程序员来说,我们应该深呼吸静下心来,先理解业务问题并围绕它来规划代码才是正确的做法。

  • 现在,我一般都会让新手程序员,在开始写代码之前,必须详细地了解需求,做出规划。这种规划有助于理清思路,制定更有效的解决方案,从而避免浪费时间做无效功。

5.注释太多或太少

  • 刚开始工作时,我不会对代码进行注释。

  • 然后,我经历了一个阶段:对每一行代码都添加注释。 一个名为add_two_numbers的方法被注释为#将两个数字相加。 这明显是多余的操作。

  • 现在回想起来,当我看了很多其他开发人员编写的代码时,并注意到他们添加注释的位置后,才真正规范地添加正确的代码注释。

6.推送重复和未使用的代码

我曾经做过这些傻事:

  • 已存在于应用程序中的编写函数
  • 保留自动生成但未使用的文件(即:测试文件)
  • 添加了没有用的包

有些框架会自动生成许多没用的文件,换句话说,就是当你开始用app时,你也不知道现有代码会生成什么东西出来。

后来,我发现避免这些问题的最佳方法,就是在提交代码前,仔细阅读我们编写的代码,那么你就能够快速找到问题所在。

7.编写低效的数据库查询

  • 我的第一份工作,对数据库一无所知。我大概花了一年时间才计算出数据库索引。

  • 那时我写了很多N+1查询,创建了db表来存储大量没有索引的数据。

这两个都是运行缓慢,让人厌烦的APP都会用的数据库查询索引。

8.使用基于错误的条件逻辑

条件 if / else 语句是软件的核心部分。

在伪代码中,它们通常看起来像这样。

if x is true
do this
else
do that

但是在我参与编写的第一个APP中,用了这样的逻辑:

do this
if this fails
do that

当我们遇到不可靠的API时,就需要挽救错误,虽然这只是例外。

9.提交包含多个功能的代码以供审核

  • 在工作中,我学到的第一件事就是不要在同一个审批请求中合并多个功能。这对审查代码的人很不友好。

  • 超过几百行的代码,会让人很难集中精神看完那么多功能模块。

  • 我经常跟新人说,如果他们认为一个功能可以进一步细分,那么我们就要后退一步,把它分得越小越好。

结论

  • 学习编程是很难的一件事。你只能通过实践来学习多种写代码的技巧。

  • 不知道你看了我犯过的编程错误有什么感想?

  • 在我们的IT职业生涯中,总有那么一个大神,帮助我们,把我们提交的每一段代码给出详细的反馈,我们才能一边犯错,一边成长。

以上是本文的所有内容,希望能给编程新人一些帮助!

如何让自己看起来不像编程菜鸟?别犯这9个编程错误相关推荐

  1. C++编程人员容易犯的10个C#错误

    C++编程人员容易犯的10个C#错误 C#的语法与C++非常相似,有些变化引起的错误却很严重,本讨论C++编程人员最容易犯的十个错误. 我们知道,C#的语法与C++非常相似,实现从C++向C#的转变, ...

  2. python编程用什么电脑好-初学Python编程看哪些书比较好?

    原标题:初学Python编程看哪些书比较好? 我推荐你一些学习Python编程适合看的书,你可以试着看看是不是可以看懂,是不是感兴趣......书中藏着你想要的答案,下面就为大家揭秘学习Python编 ...

  3. 看完之后保证你对socket编程步骤胸有成竹。 C++ Socket网络编程基础详解(TCP)

    C++ Socket网络编程基础详解(TCP版) ​    网络编程,就是编写程序使得两台计算机交换数据,其实从本质上来讲,网络编程最终所实现的功能,和我们文件的输入输出很相似,只是文件输入输出的对象 ...

  4. 华为C语言编程规范重点笔记(学习C编程规范看这篇就够了)

    华为C编程规范原文详情:link. 一.代码总体原则 1.清晰第一 **清晰性是易于维护.易于重构的程序必需具备的特征.**"程序必须为阅读它的人而编写,只是顺便用于机器执行".& ...

  5. 自动售货机编程_Rosmaro中基于视觉自动机的编程简介

    自动售货机编程 by Łukasz Makuch 通过ŁukaszMakuch Rosmaro中基于视觉自动机的编程简介 (An introduction to visual automata-bas ...

  6. 互联网Scratch编程趣味课:不插电编程和计算机对话[图]

    2019独角兽企业重金招聘Python工程师标准>>> 互联网Scratch编程趣味课:不插电编程和计算机对话[图]: 过去的一周,冉爸和一家棒球夏令营合作,给一群无拘无束的小帅哥带 ...

  7. python面向对象编程的优点-Python 基础知识----面向对象编程

    一.面向对象编程介绍 面向过程编程: 核心是过程二字,过程指的是解决问题的步骤,即先做什么再干什么然后干什么. 基于该思想编写程序好比在设计一条流水线,是一种机械式的思维方式. 优点:复杂的问题流程化 ...

  8. python编程入门书-读书笔记之《编程小白的第1本Python入门书》

    本书电子版下载地址:百度网盘 写在前面:你需要这本书的原因 有没有那一个瞬间,让你想要放弃学习编程? 在我决心开始学编程的时候,我为自己制定了一个每天编程1小时的计划,那时候工作很忙,我只能等到晚上9 ...

  9. 程序员永远不要再犯的5个编程错误

    1. 不加理解的拷贝代码 你经常会发现你需要的代码在一些别的程序里面有.整段的拷贝代码并且就这么使用它而不去烦恼于理解每一行代码是很诱人的. 有时候你拷贝的代码可能太大了以至于没有时间去完全理解它.如 ...

  10. java编程基础素数实验报告,JAVA 基础编程练习题1 (输出素数)

    JAVA 基础编程练习题1 (输出素数) JAVA 基础编程练习题1 (输出素数) 题目:判断 101-200 之间有多少个素数,并输出所有素数. 程序分析:判断素数的方法:用一个数分别去除 2 到 ...

最新文章

  1. Microsoft Dynamics CRM 2013 试用之系统篇 正式安装 Microsoft Dynamics CRM Server 2013
  2. android 混淆打包教程,Android studio 混淆打包
  3. 嵩天python笔记_第一篇python笔记
  4. python常用模块实例_python中常用的各种数据库操作模块和连接实例
  5. mybatis mysql自动连接数据库_如何用mybatis链接数据库
  6. 深度学习总结——CS231n课程深度学习(机器视觉相关)笔记整理
  7. python爬取jsp网页_帮MM用python抓取index及一级目录下的所有符合要求的网页
  8. Qt sqlit3的增、删、改、查、判断等基本操作接口
  9. 动态规划--Leetcode746
  10. c++调用求平方根函数_如何使用java语言求一个正整数的平方根?(不使用库函数)...
  11. 事务对性能影响_MySQL数据库性能优化史诗级大总结
  12. 关于java.lang.NoClassDefFoundError的问题
  13. C# AE 对图层筛选要素后显示/只显示符合条件的要素
  14. openvpen最新安卓中文版_ins下载官方安卓最新版-ins下载安卓版中文版下载v2.5.46 手机版-西西软件下载...
  15. 通过pyhive连接hive需要的Python包
  16. DOS命令行界面打开文件
  17. 如何将Kali Linux中的Firefox浏览器语言设置为中文
  18. 深入浅出了解几种简单设计模式
  19. 如何用 Node.js 爬虫?
  20. android button 字母自动变大写的解决

热门文章

  1. 农作物分布数据、作物类型分布、农田分布数据、土地利用数据、植被类型数据、物候数据、NDVI数据
  2. shell 封装mysql查询
  3. python调用perl_文本处理,用perl 还是python?
  4. 智能判断图片中是否存在某物体_RFID新技术:让所有物体联网!
  5. mysql函数隐式游标_Oracle隐式游标获取记录数
  6. mysql varchar255 知乎_CHAR与VARCHAR详解
  7. 提高Office2010等高版的启动速度文章链接收集-Office2010打开慢速度怎么办?
  8. mysql unix_timestamp()获取日期的时间戳 from_unixtime时间戳转日期
  9. mybatis批量更新的时候报Lock wait timeout exceeded; try restarting transaction
  10. 光谷码农·每日新闻(2019-05-09)