我目前有一个系统,报告警报,并根据警报削减门票。每个警报必须包含名称、资源、到runbook的链接和文档。
我正试图为一个用例编写干净的代码。
警报名称通常为35个字符以上,并包含空格。
因此键/值对看起来像这样:
tickets = {
"Alert for Admin login":
f"Alert Name: {alert_name}",
f"Runbook": {link},
f"Documentation": {link},
"Description": "Description here"
}
例如,这只是一个警告。系统将收到多个警报,因此可能有大约10个这样的键值对。描述将是最长的,可能需要空格。
这样实现会被认为是好的做法吗?我想把它写得尽可能容易读。任何建议或指导都会有所帮助。
如果您的数据结构类似于@ almmy -code的答案,那么您可以为您的警报编写一个数据类。
from dataclasses import dataclass
ticket = {
"name": f"Name here",
"desc": "Description here",
"runbook": f"link1",
"docs": f"link2"
}
@dataclass
class Alert:
name: str
runbook: str
docs: str
desc: str
alert = Alert(*+ticket)
你也可以继承你的警报来创建子类,以区分和自定义他们的行为。
class AdminAlert(Alert):
pass
这使得代码通常更具可读性,因为设置或获取值的整个alert["item"]
被替换为alert.item
。此外,您还可以根据类型了解它存储的数据,这有助于整理内容。
但是,每次警报结构发生变化时,您也会调整datacclass,希望这种情况不会经常发生:)
如果你想定义一个结构来描述每个票据,我建议这个结构既干净又容易阅读,同时又尊重python的命名规则:
ticket = {
"name": f"{alert_name}",
"description": "Description here",
"runbook": f"{link}",
"documentation": f"{link}"
}