如何让自己看起来不像编程菜鸟?别犯这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职业生涯中,总有那么一个大神,帮助我们,把我们提交的每一段代码给出详细的反馈,我们才能一边犯错,一边成长。

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
GeoPandas是一个开源的Python库,旨在简化地理空间数据的处理和分析。它结合了Pandas和Shapely的能力,为Python用户提供了一个强大而灵活的工具来处理地理空间数据。以下是关于GeoPandas的详细介绍: 一、GeoPandas的基本概念 1. 定义 GeoPandas是建立在Pandas和Shapely之上的一个Python库,用于处理和分析地理空间数据。 它扩展了Pandas的DataFrame和Series数据结构,允许在其中存储和操作地理空间几何图形。 2. 核心数据结构 GeoDataFrame:GeoPandas的核心数据结构,是Pandas DataFrame的扩展。它包含一个或多个列,其中至少一列是几何列(geometry column),用于存储地理空间几何图形(如点、线、多边形等)。 GeoSeries:GeoPandas中的另一个重要数据结构,类似于Pandas的Series,但用于存储几何图形序列。 二、GeoPandas的功能特性 1. 读取和写入多种地理空间数据格式 GeoPandas支持读取和写入多种常见的地理空间数据格式,包括Shapefile、GeoJSON、PostGIS、KML等。这使得用户可以轻松地从各种数据源中加载地理空间数据,并将处理后的数据保存为所需的格式。 2. 地理空间几何图形的创建、编辑和分析 GeoPandas允许用户创建、编辑和分析地理空间几何图形,包括点、线、多边形等。它提供了丰富的空间操作函数,如缓冲区分析、交集、并集、差集等,使得用户可以方便地进行地理空间数据分析。 3. 数据可视化 GeoPandas内置了数据可视化功能,可以绘制地理空间数据的地图。用户可以使用matplotlib等库来进一步定制地图的样式和布局。 4. 空间连接和空间索引 GeoPandas支持空间连接操作,可以将两个GeoDataFrame按照空间关系(如相交、包含等)进行连接。此外,它还支持空间索引,可以提高地理空间数据查询的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值