这些步骤可以改变你对写代码的看法!
看完之后,你会有一个想法。(来源:Giphy)
让我们从一个统计数字开始。
GitHub报告说有超过7300万的开发者和超过2亿的存储库!!
这意味着编码已经成为我们生活中不可或缺的一部分。我们每天都会写很多行代码。有大量的文章和youtube视频展示了如何编写和学习编码,以及使用模块,甚至有些展示了在时间和空间复杂性方面对代码的优化。
但是,当你为一个涉及多个脚本和模块的产品编写代码时,代码的结构就变得至关重要。看,有一个简单的概念!每花一分钟组织,就能赚取一小时。
撇开哲学不谈,让我们试着列出一些要点,为什么我们需要花时间来组织我们的代码。
1.可理解性
乔伊理解我的代码!!!(来源:Giphy(来源:Giphy)
有组织的代码会让人很容易理解代码。人们可以清楚地了解代码的流程。以这种方式,即使是成千上万行的代码也会显得像一个故事。
2.易于修改
以这种速度修改......(来源:Giphy)
一旦我们脑海中的故事非常清晰,我们就可以非常毫不费力地添加、删除、修改和优化代码。这不仅可以减少时间,每次你都能清楚地知道在哪里进行代码的修改。
3.几分钟内修复错误
这种情况不会再发生了......(来源:Giphy)
这可能是一种痛苦。代码可以在几分钟内写完。但识别和修复一个错误可能需要一段时间,有时甚至远远超过一段时间。但是,我保证,有组织的代码会在很大程度上帮助你处理。
所以,现在我们明白了在代码中组织的需要是至关重要的。但问题是,我们如何才能组织起来呢?因此,这里有一些很好的提示,可以帮助你组织你的代码。
1.计划
在你写之前做好计划,让你的代码明亮起来
每次你计划写代码时,请确保你先计划。思考和写代码同时进行会让你觉得你写代码的速度更快。但从长远来看,这些代码将需要更多的时间来理解和修改。首先,你可以问以下问题。
- 我有哪些输入?
- 我的代码的流程应该是怎样的?
- 我需要多少个不同的函数?
- 输出是什么?
例如,我们说给定一个长方形的长度和气息,我们需要找到长方形的面积和周长的调和平均值。这个问题背后的逻辑很简单。但存在着不同版本的代码。
首先是计划,这是很容易的
计划(图片来自Aayush Ostwal)
让我们开始编码,开发第一个代码。
def calculate_harmonic_mean(length, breath):
2.修饰
修剪(图片由Aayush Ostwal提供)
在这一步,我们将看到如何使代码功能化。我们的想法是将一大段代码修剪成一个较小的子功能。这些小函数将增加全面性。同时,调试也变得很容易,因为我们知道哪些函数在工作,谁在制造问题。
理想情况下,每个函数中应该只有2-6行。因此,每次调试时,你都会知道需要修复的确切行数。
如何进行功能化?
当我们在规划代码结构时,我们创建了一些步骤。因此,对于每个步骤,我们可以创建一个或多个函数。这就是为什么我们一开始就做了规划。
所以,根据我们的计划,我们有两个不同的步骤来计算面积和周长。因此,我们将为每个步骤创建单独的函数。
因此,现在的代码变成了。
def get_perimeter(length, breath):
def get_area(length, breath):
def calculate_harmonic_mean(length, breath):
看起来,我们增加了代码的长度。但是,如果你从大的方面来看,这只是一个简单的函数。当你要开发一个管道或产品时,功能化肯定会有更大的影响。
3.不要复制
不要重复你的代码。
合并相同的代码(图片来自Aayush Ostwal)
这应该是你写任何代码前的底线。在你的代码中不 应该有重复的内容。每次你想写同一行代码时,你可以很容易地将其功能化。
这样做的最大好处是使改变代码变得超级容易。如果同一行代码多次出现在项目中,你在修改代码时可能会错过一些情况。
现在让我们把长度和呼吸的谐波平均值的计算也功能化。因此,我们可以将其功能化,而不是写两次谐波平均数公式。
def get_perimeter(length, breath):
def calculate_harmonic_mean(a, b):
def calculate_harmonic_mean(length, breath):
我们已经使用了两次相同的函数。因此,如果将来我们想计算平均数而不是谐波平均数,我们可以简单地改变一个函数而不是改变两行代码。
4.小而有效的提示
以上三种方法会大大影响你的代码质量。除了它们之外,还有一些好的做法也可以遵循。这与代码的结构无关,但它会影响到代码的全面性。
下面的方法是完全没有必要的。但我强烈建议,在使用上述方法之前,你应该先试试这些方法。这些都是非常基本的方法,在大学的laungaue课程的初始讲座中都有教授。
A.记录/评论
我们总是建议在你的代码中添加注释。另外,当你的代码是管线的一部分时,日志变得非常重要。
注释可以帮助你理解这些行的代码是做什么的。你可以在注释中添加逻辑或代码的目的。
日志是任何管线中最重要的模块之一。据我所知,日志将在以下方面帮助你。
- 日志是与代码互动的方式,甚至不需要阅读代码。如果日志语句出现在正确或需要的位置,你可以毫不费力地从日志文件中推断出代码。
- 在出现错误的情况下,日志会帮助你知道你的代码一直运行到哪里。你也可以在日志中打印出确切的错误(Exception),或者打印出你的代码失败的那一行。我认为这是一个伟大的工具。
B.全局包
总有一些变量是我们需要经常调用的。这些可以是一些contant值,一些目录路径,或在数据库中配置的值。
详细说来,通常开发人员使用SQL表来使代码可配置。现在,这些变量在代码运行过程中是固定的。因此,我们可以初始化一个全局变量,而不是多次查询数据库。
这不仅会减少SQL数据库的负载,也会减少代码的运行时间。
C.智能化的变量名称
我不会在这一节中浪费我们的时间。这是很直接的。变量的名称应该是有意义的。它们应该根据其使用目的来命名。
聪明地命名变量不仅可以帮助你获得洞察力,而且在代码中跟踪它们也会更轻松。
D.变量=值
当你调用一个函数时,可能有两种方式。
perimeter =
我更倾向于使用第二种方式。因为我们使用的函数非常小,但当我们向一个函数传递10多个参数时,这种方法使代码变得相当方便。
总结
照片:Christina @ wocintechchat.comonUnsplash
编写、阅读和修改代码可能是一件很痛苦的事情。减少这种努力的唯一方法是使你的代码更有条理。而组织和优化是两个不同的世界。而我在这篇文章中所谈到的都是关于组织的。
这些是我们讨论的技巧。
1.
我希望这些技巧能够帮助你写出更有组织和有效的代码。我相信修复错误将不再是一种痛苦。而每当有新的团队成员加入你的项目时,他/她就可以迅速提升。
另外,请让我知道你用什么技术来写更有组织和结构化的代码。我将很高兴看到你的评论。
如何组织和结构化你的代码?原文发表于Nerd For Techon Medium,在那里人们通过强调和回应这个故事来继续对话。