写枚举类,哪种对齐方式比较好?

308 天前
 XueXianqi

方式 1:

class Action(XIntegerChoices):
    """ 动作 枚举类 """

    CREATE = 0, "创建"
    DELETE = 1, "删除"
    UPDATE = 2, "修改"
    RETRIEVE = 3, "查看"
    LIKE = 4, "点赞"
    FOLLOW = 5, "关注"
    COLLECT = 6, "收藏"
    REGISTER = 7, "注册"
    LOGIN = 8, "登录"
    SEND = 9, "发送"
    CANCEL = 10, "取消"

方式 2:

class Action(XIntegerChoices):
    """ 动作 枚举类 """

    CREATE   = 0,  "创建"  # noqa
    DELETE   = 1,  "删除"  # noqa
    UPDATE   = 2,  "修改"  # noqa
    RETRIEVE = 3,  "查看"  # noqa
    LIKE     = 4,  "点赞"  # noqa
    FOLLOW   = 5,  "关注"  # noqa
    COLLECT  = 6,  "收藏"  # noqa
    REGISTER = 7,  "注册"  # noqa
    LOGIN    = 8,  "登录"  # noqa
    SEND     = 9,  "发送"  # noqa
    CANCEL   = 10, "取消"  # noqa
2069 次点击
所在节点    Python
31 条回复
ruanimal
308 天前
话说你这个 tuple 不加括号,有点恶心
XueXianqi
308 天前
@ruanimal
这个是参考 Django 的枚举类: https://docs.djangoproject.com/zh-hans/4.2/ref/models/fields/#enumeration-types
其他的一些枚举类也有部分是如此,是隐式的
对于新手来说确实不够友好...
apake
308 天前
第二种看的更清楚, 更省脑子. 所以第二种.
kingcanfish
308 天前
来写 golang 你就不会有这个烦恼了
justdoit123
308 天前
没调教出格式化工具,就老老实实用第一种。
iosyyy
307 天前
在这两种对齐方式中,第一种方式(方式 1 )通常比第二种方式(方式 2 )更受推荐,原因如下:

可读性:第一种方式允许变量名的长度自然变化,使得代码更易读和理解。当变量名长度不一致时,对齐会导致外观上不够整齐,但通常更直观和美观。

代码规范:第一种方式符合 PEP 8 代码风格指南,这是 Python 代码的官方风格指南。PEP 8 建议避免在赋值等号(在这种情况下)之前使用多个空格。虽然第二种方式尝试通过 # noqa 来忽略代码检查警告,但最好在可能的情况下避免与代码规范冲突。

可维护性:如果未来添加或修改变量,第一种方式会自动适应变化,而第二种方式可能需要手动调整对齐,如果不仔细处理可能引入错误。

一致性:第一种方式更符合典型的 Python 代码风格,遵循大多数 Python 项目中使用的标准缩进做法。

总体而言,通常更应该优先考虑可读性、可维护性和代码规范,而不是严格的对齐。第一种方式允许灵活处理变量名长度,同时提供更干净、符合标准的代码风格。
iosyyy
307 天前
@iosyyy chatgpt
XueXianqi
307 天前
@mistkafka 确实,一语中的,第二种得手动格式化,成本较高,git 不友好
iorilu
307 天前
这代码是用什么框架吗
XueXianqi
307 天前
@iorilu
这个代码不依赖于框架。
可以单独提出来用,也可以用在 Django 、Flask 、FastAPI 里面(例如 Django 的 Model 的 choices )

这是自己封装的枚举基类:
https://gitee.com/xuexianqi/x_utils/blob/master/enum_utils/base.py
l4ever
300 天前
何必纠结这些, IDE 说了算, 一保存就自动格了.
管你嘞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957974

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX