“动态”编程逻辑:这种灵活性的合理性有多大

21次阅读

共计 706 个字符,预计需要花费 2 分钟才能阅读完成。

reddit 刷到的一个帖子发现 原来大家都有一样的烦恼,V 站的朋友们怎么看
https://www.reddit.com/r/AskProgramming/comments/1cmkf0m/dynamic_logic_in_code_is_this_flexibility_worth_it/

译文如下

在我最近的一份工作中,我注意到我们的代码库中有大量的 ” 动态 ” 逻辑。例如,我们通过动态提取列名来管理具有不同模式的多个 SQLite 文件,而不是为每个模式进行版本控制。基本上,用户查询可以在不同的数据库上执行,而我们并不需要提前知道数据库上有哪些表格 / 列。这样的优点是我们不需要为每个数据库写新的逻辑,创建这些数据库的团队也不需要与我们(后端)同步,API 可以 ” 直接 ” 透明地访问数据库内容。所以这种策略被认为是 ” 更灵活的 ”。

然而,我发现这使得理解、测试和编写代码文档变得更加困难。向后兼容性的提供也变得更困难,或者在必要时定制后端的行为也更为复杂。例如,假设我们在数据库上有一个 user.full_name 列,但 API 必须返回两个分开的字段(first_namelast_name)。现在的情况是,代码被修改以添加大量的if 语句(例如:if column_name == "full_name": ...),向后兼容性变得非常困难。

我有一种感觉,所有这些 ” 动态 ” 的代码在理论上听起来很聪明、很酷,但实际上它变成了一个负担。这是一个众所周知的问题,还是我理解错了?我想向我的团队阐述我为什么认为这是一个问题,但我缺乏参考文献。你能提供一些我可以用来分享我的观点的信息吗?这种做法有一个名字吗?有关代码 ” 动态性 ” 的最佳实践是什么?

正文完
 0