”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 成为更好的编码员:提示

成为更好的编码员:提示

发布于2024-10-31
浏览:502

Become a Better Coder: Tips

网上流传着无数的 Python 最佳实践,对每个最佳实践的看法可能会因你询问的人而异。互联网使专业知识民主化,允许任何人——包括我自己——分享他们的观点。然而,在本文中,我们将重点关注 10 个永恒的 Python 最佳实践,这些实践已达成广泛共识并被广泛认为是基础。

Pandas 备忘单

Git 命令备忘单

前 50 个 SQL 面试问题

提示1:函数应指定参数和返回类型
定义函数时,您希望始终指定参数的类型以及函数返回的数据类型。这将帮助您和团队中的开发人员知道会发生什么,而不必总是使用打印语句来获得直观的理解。

提示 2:函数应该处于同一抽象级别
当我们谈论处于同一抽象级别的函数时,我们指的是函数应该执行单个、定义良好的任务的想法。该任务在整个功能中应该处于一致的抽象级别。换句话说,该功能应该专注于特定的细节或复杂程度,并且所有功能的操作都应该在同一级别上进行。

技巧 3:函数应该很小
函数应该是可重用的。而且函数越大,可重用的可能性就越小。这也与为什么一个函数应该只做一件事相关。如果它只做一件事,那么它很可能会很小。

技巧4:开闭原则
开闭原则 (OCP) 规定类、方法或函数必须对扩展开放,但不能对修改开放。这意味着定义的任何类、方法或函数都可以轻松地重用或扩展用于多个实例,而无需更改其代码。
这不符合 OCP,因为每当有一个新的国家时,我们就需要编写一个新的 if 语句来补充它。现在这可能看起来很简单,但想象一下我们有 100 个或更多的国家/地区需要考虑。看起来怎么样?

提示 5:不惜一切代价避免发表评论
评论有一种虚假的真实性。它们将读者的注意力从代码实际执行的操作转移到其他人所说的执行的操作上。

随着时间的推移以及代码收到更新或更改,这可能会变得非常成问题。在某些时候,评论会变成谎言,现在每个人都必须通过谎言的镜头观察真相。

必须不惜一切代价避免发表评论。评论迫使读者继承你的想法,而你的想法充其量只是过去的。当函数或类更改时,它的注释很可能不会随之更改。最有可能的是,它们阻碍了读者向前思考。

注释表明作者精神上无法提供描述性良好的类、函数或变量名。它暴露了程序员平庸的态度,并迫使团队继承这样的态度。

提示 6:避免使用幻数
幻数是一个硬编码值,可能会在稍后阶段发生变化,但因此很难更新。

例如,假设您有一个页面在“您的订单”概览页面中显示最后 50 个订单。 50 是这里的神奇数字,因为它不是通过标准或约定设置的,它是您出于规范中概述的原因而编造的数字。

现在,您要做的就是在不同的地方拥有这 50 个订单 — 您的 SQL 脚本(从订单中选择前 50 个 *)、您的网站(您的最后 50 个订单)、您的订单登录信息(对于 (i = 0; i

提示 7:避免深层嵌套
限制循环、条件或函数内的嵌套级别以提高可读性。

提示 8:避免硬编码路径
避免对文件路径或 URL 进行硬编码;请改用配置文件或环境变量。

提示 9:班级规模宜小
是的!班级规模应尽可能小。就像函数一样。

唯一的区别是,在函数中,大小由该函数中的行数决定,而在类中,大小由该类中的职责数量决定。

通常,类名代表它可能拥有的职责类型,但是当名称不明确或太笼统时,很可能我们赋予了它太多的职责。

这让我们回到了 SRP(单一责任原则),它规定一个类应该只有一个理由——一个责任——来改变。

提示 10:避免复杂的三元表达式
避免使用过于复杂的三元表达式;优先考虑可读性而不是简洁性,以使代码更容易理解。

版本声明 本文转载于:https://dev.to/e-tech/become-a-better-coder-10-tips-5h2b?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • C++中如何将独占指针作为函数或构造函数参数传递?
    C++中如何将独占指针作为函数或构造函数参数传递?
    在构造函数和函数中将唯一的指数管理为参数 unique pointers( unique_ptr [2启示。通过值: base(std :: simelor_ptr n) :next(std :: move(n)){} 此方法将唯一指针的所有权转移到函数/对象。指针的内容被移至功能中,在操作...
    编程 发布于2025-07-12
  • 为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    为什么Microsoft Visual C ++无法正确实现两台模板的实例?
    The Mystery of "Broken" Two-Phase Template Instantiation in Microsoft Visual C Problem Statement:Users commonly express concerns that Micro...
    编程 发布于2025-07-12
  • 在JavaScript中如何并发运行异步操作并正确处理错误?
    在JavaScript中如何并发运行异步操作并正确处理错误?
    同意操作execution 在执行asynchronous操作时,相关的代码段落会遇到一个问题,当执行asynchronous操作:此实现在启动下一个操作之前依次等待每个操作的完成。要启用并发执行,需要进行修改的方法。 第一个解决方案试图通过获得每个操作的承诺来解决此问题,然后单独等待它们: co...
    编程 发布于2025-07-12
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-07-12
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-07-12
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-07-12
  • 解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    解决MySQL插入Emoji时出现的\\"字符串值错误\\"异常
    Resolving Incorrect String Value Exception When Inserting EmojiWhen attempting to insert a string containing emoji characters into a MySQL database us...
    编程 发布于2025-07-12
  • 我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    我可以将加密从McRypt迁移到OpenSSL,并使用OpenSSL迁移MCRYPT加密数据?
    将我的加密库从mcrypt升级到openssl 问题:是否可以将我的加密库从McRypt升级到OpenSSL?如果是这样,如何?答案:是的,可以将您的Encryption库从McRypt升级到OpenSSL。可以使用openssl。附加说明: [openssl_decrypt()函数要求iv参...
    编程 发布于2025-07-12
  • 如何干净地删除匿名JavaScript事件处理程序?
    如何干净地删除匿名JavaScript事件处理程序?
    删除匿名事件侦听器将匿名事件侦听器添加到元素中会提供灵活性和简单性,但是当要删除它们时,可以构成挑战,而无需替换元素本身就可以替换一个问题。 element? element.addeventlistener(event,function(){/在这里工作/},false); 要解决此问题,请考虑...
    编程 发布于2025-07-12
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-07-12
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 的 ...
    编程 发布于2025-07-12
  • 如何实时捕获和流媒体以进行聊天机器人命令执行?
    如何实时捕获和流媒体以进行聊天机器人命令执行?
    在开发能够执行命令的chatbots的领域中,实时从命令执行实时捕获Stdout,一个常见的需求是能够检索和显示标准输出(stdout)在cath cath cant cant cant cant cant cant cant cant interfaces in Chate cant inter...
    编程 发布于2025-07-12
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-07-12
  • 大批
    大批
    [2 数组是对象,因此它们在JS中也具有方法。 切片(开始):在新数组中提取部分数组,而无需突变原始数组。 令ARR = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    编程 发布于2025-07-12
  • 如何有效地转换PHP中的时区?
    如何有效地转换PHP中的时区?
    在PHP 利用dateTime对象和functions DateTime对象及其相应的功能别名为时区转换提供方便的方法。例如: //定义用户的时区 date_default_timezone_set('欧洲/伦敦'); //创建DateTime对象 $ dateTime = ne...
    编程 发布于2025-07-12

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3