如何把代码写的优雅一些

本文介绍了良好的代码规范,包括变量命名、数据库表名创建及方法封装等,提出了拿到新需求时应从用户和技术两个角度出发,确保代码逻辑清晰、易读性高。同时分享了接手他人代码时的有效策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

      写这篇博客的背景是因为今晚因为一些代码风格的原因,被主管教育了一顿,代码的好坏,影响的是整个公司的开发效率,还会影响找bug的速度,同时,对我们自身的成长也会起到阻碍作用。所以是时候规范下自己的代码了。

二、一些代码规范

1、变量名的命名

1)如果是多个单词的变量,一定要采用驼峰式的命名,即:aaBb

解释:作为一个phper,这个是从一开始就要注意的,算是一种统一的命名规范。

2)定义一些查询出来的变量的时候,不要用$arr,$arr1,$arr2

解释:因为在我们自己看代码的时候,我们可以清晰的分辨出不同的数组是从哪里查出来的。但是对于我们的同事呢?特别是新来的同事,让他们观看这种代码简直是一种折磨。所以在命名的时候,一定要尽量贴近它所代表的意思。
比如:
//物品查出来的数组
$goods
//用户查出来的数组
$users

3)关于新建数据库

标准:让别人看到你的表名,就知道你这个代表的是哪个表

解释:这个标准也是主管告诉我的。特别是在项目逐渐增大的时候,表名的创建就显得尤为重要。也许表名建的不好并不能影响代码的正确性,但是不直观的表名对同事来说,始终是不友好的。想要成为一名高级程序员,必须要写出让任何码农一眼就能看懂的代码,于无声处听惊雷。
例如:

//窗帘的操作表。首先是属于goods设备,所以前缀为goods,其次是窗帘相关的,所以第二个是curtain。最后的handle代表的操作。这样的命名就显得一目了然许多。
goods_curtain_handle

4)同一个方法中,不要出现相同名字的变量。

解释:此处和上面第2条类似。主要就是怕弄混代码,也是为了方便其他的技术人员阅读我们的代码。

5)方法的封装

标准:通一个方法,当被连续调用两次的时候,就要考虑封装起来。
解释:方法的封装,也是我们自身水平的提升。刚开始都是一步一步的面向过程编程。但这始终是落了下风,而且代码也会变得冗余不堪。方法的封装,也是我们变强的第一步。

三、拿到新需求

1、站在用户角度使用

      在这一步,我们需要参考其他成熟的软件,如果有类似的功能的话,就去点一点,了解每个操作。此时的我们是处于用户的角度,了解用户需求,知道新功能的基本流程是哪些。如果需要自己建立数据库的话,数据库该怎么建,都需要哪些字段等等。这一步一定要老老实实的,把每个流程都走一遍。

2、站在技术角度

      要思考自己上一步都做了些什么。每个功能的要点在哪里。实现的难点在哪里。可能会发生什么样的情况,类似于if…else方式的思考。这一步,我们作为技术,考虑的是如何实现

3、具体实现

1)可以用写注释的方式,把每个步骤的注释都提前写好,然后开始撸码

2)使用百度脑图,把这个功能从头捋一遍。

      经过以上两个过程,我们基本上就能考虑到所有可能发生的情况。这样写出的代码,逻辑性强,bug少。听说谷歌的工程师,他们的竞争就是“一遍写出新功能,并且毫无bug”。我相信,他们肯定是经过严密的思考,把所有情况都在脑子里面走了一遍才动笔写的。很值得我们学习。

四、接手同事的代码

1、先去体验下具体的功能。就比如上面所说的,站在用户的角度去体验功能。

2、体验之后,不要急着看同事的代码。此时,我们作为开发人员,我们自己对于这个功能有自己的理解。此时应该把自己的实现过程写下来。

3、怀揣自己的想法去看他人的代码。抱着批判性的态度,心里就认为同事的代码一定是有BUG的。站在这个角度,我们去阅读同事的代码,更有利于我们看懂并且找到其中的bug。因为对于这部分的功能和实现过程,我们早就了然于胸。

五、总结

真正大牛的代码,厉害之处不是用的方法有多吊,用的技术有多先进,而是他们的代码可读性非常高。注释,逻辑丝毫不差,晋入返璞归真的行列。我等还需努力啊。

end

<think>好的,用户想了解如何编优雅的Python代码。首先,我需要明确“优雅”在编程中的定义,通常指代码简洁、可读性强、高效且符合Python之禅的原则。接下来,我得考虑用户可能的背景,可能是刚入门的开发者,或者有一定经验但想提升代码质量的人。需要覆盖哪些方面呢?Python之禅、代码规范、常用技巧、设计模式、工具使用等。 用户可能希望得到实用的建议,而不仅仅是理论。所以应该举例说明,比如PEP 8规范,列表推导式,上下文管理器等。还要注意结构清晰,分点说明,这样用户容易理解。 需要检查是否遗漏了重要内容,比如类型注解、异常处理、文档字符串这些现代Python开发中的重要部分。另外,工具方面可以推荐black、flake8、mypy等,帮助自动化代码格式化与检查。 可能用户没有提到的深层需求是希望代码更易于维护和团队协作,所以强调代码可读性和规范的重要性。还要避免使用过于复杂的技巧,保持代码的简洁性。需要确保每个建议都有具体的例子,让用户能直观看到优雅代码的样子。 总结下来,结构应该包括Python之禅、代码规范、编技巧、面向对象、函数式编程、工具链、文档和测试等方面。每个部分用简短的例子说明,最后给出学习资源。这样用户能系统地了解如何提升代码质量,优雅的Python代码。</think>以下是如何编优雅Python代码的实用指南,结合Python之禅和最佳实践: 1. **遵循Python之禅原则** ```python # 输入"import this"可查看完整内容 # 核心原则:优美胜于丑陋,简洁胜于复杂,可读性很重要 ``` 2. **代码规范要点** - 使用4空格缩进 - 变量命名:lowercase_with_underscores - 类命名:CapitalizedCase - 常量命名:UPPER_CASE - 运算符两侧加空格:x = y + z 3. **高效编技巧** ```python # 列表推导式 squares = [x**2 for x in range(10) if x % 2 == 0] # 上下文管理器自动处理资源 with open('data.txt') as f: data = f.read() # 使用zip同时遍历 names = ['Alice', 'Bob'] ages = [25, 30] for name, age in zip(names, ages): print(f"{name} is {age} years old") # 海象运算符(Python 3.8+) if (n := len(data)) > 10: print(f"Got {n} items") ``` 4. **函数设计原则** ```python # 类型注解和文档字符串 def calculate_area(radius: float) -> float: """计算圆面积 Args: radius: 圆的半径(必须大于0) Returns: 圆面积数值 """ return math.pi * radius ** 2 # 保持函数单一职责 def process_data(data): cleaned = clean_data(data) transformed = transform_data(cleaned) return transformed ``` 5. **面向对象最佳实践** ```python # 使用数据类(Python 3.7+) from dataclasses import dataclass @dataclass class Point: x: float y: float color: str = 'black' # 优先使用组合而非继承 class Logger: def __init__(self): self.handlers = [] def add_handler(self, handler): self.handlers.append(handler) ``` 6. **函数式编程技巧** ```python # 使用生成器处理大数据 def read_large_file(file): while True: chunk = file.read(4096) if not chunk: break yield chunk # 高阶函数应用 from functools import partial sorted_by_age = partial(sorted, key=lambda x: x['age']) ``` 7. **现代特性应用** ```python # 模式匹配(Python 3.10+) def handle_response(response): match response.status: case 200: process_success(response.data) case 404: log_error("Not found") case _: raise UnexpectedStatus(response) ``` 8. **工具链推荐** - 格式化:Black(强制统一代码风格) - 代码检查:Flake8 + pylint - 类型检查:mypy - 依赖管理:poetry - 测试框架:pytest 9. **文档与测试** ```python # 示例测试用例 def test_calculate_area(): assert round(calculate_area(1), 2) == 3.14 with pytest.raises(ValueError): calculate_area(-1) ``` 10. **性能优化技巧** - 优先使用内置函数 - 使用lru_cache缓存重复计算 - 避免不必要的对象创建 - 使用生成器代替列表处理流式数据 **学习资源推荐**: 1. 《流畅的Python》 2. Python官方PEP8文档 3. Real Python教程网站 4. Google Python风格指南 记住:优雅代码应该是即使6个月后,你自己和同事也能在5分钟内理解其功能的代码。保持简洁,但不牺牲可读性;追求高效,但不陷入过早优化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铁柱同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值