作者cloudgoogle (漫步在云端)
看板Soft_Job
标题[请益] 栏位或是变数改名
时间Fri Aug 13 01:18:09 2021
这边想请问各位前辈系统维护上常常遇到的一个问题
就是程式中的变数或是资料表栏位命名的"变更"
我不确定是不是一开始我的设计的想法就错了
通常我在设计时,会将使用者的操作"画面"与系统中的命名尽量保持一致,
讨论起来比较有共通的语言,尤其是在一些专有名词的栏位命名上。
Ex: 客人提到要记录XXXX No.,栏位或是变数的名字就会是xxxx_no
----------------------------------------------------------------
但是系统维护久了,使用者想要变更"显示名称"的需求肯定是会出现
有的关联已经散到各处,要把系统变数或资料表栏位都修改太劳师动众。
我通常都只把i18n显示的文字改掉就算了。
只是日积月累的修改,最近发现反而原始的用意消失了,还造成了一些另类的困扰
比较麻烦的例子是,画面上原本有OOO ID & OOO No.
因为各种理由,他们想要把 OOO ID 跟 OOO No.的Label文字对换
(原本的ID想改为称做No., 反之No.想改叫做ID)
对使用者来说,只是改个显示文字而已,应该可以"秒改"。
但这种状况在後续维护的困扰就非常大...
尤其是新成员加入专案时,非常容易出现以下状况
使用者:请你可以帮我查一下资料库 OOO ID 是 "0003"的修改时间吗?
新成员:资料库查不到这笔资料喔!
使用者:怎麽可能!我画面现在就正在看阿#$%^&*(
新成员:@#^*($$,这栏位是哪个白痴命名
但是不可能系统整天随着变更名称的需求,就一起进行变数或栏位名称修正。
我相信修改显示文字的需求应该是很常见。
想请教各位有经验的前辈们
是我在一开始的设计方向就错了吗?
或是有建议什麽其他的方法可以解决或避开这种问题呢?
感谢~
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.173.219.85 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1628788691.A.350.html
1F:推 NDark: visual studio 可以全部改名. 如果你是要这个得话. 08/13 01:45
2F:→ netburst: map 08/13 01:54
3F:推 ZakuSIN: 资料库名称要修改不是挂个维护更新就好了? 不难吧 08/13 01:54
4F:→ devilkool: 你讲的ID换NO这种状况我会选择拒绝这个需求 08/13 01:55
5F:推 ZakuSIN: 你要设计的是人 不是程式 08/13 01:58
6F:推 lturtsamuel: domain driven design 看一下 统一语言的重要性 08/13 02:29
7F:→ lturtsamuel: id跟no调换的需求听起来就很有问题 你怎麽能保证id是 08/13 02:31
8F:→ lturtsamuel: 连续递增的 08/13 02:31
9F:→ Hsins: 一开始就不应该为了配合 XXXX No. 而把栏位或变数命名成 xx 08/13 02:32
10F:→ Hsins: xx_no 08/13 02:32
11F:→ airtsubasa: id可以换no? 这通常是key值,你该电的是user 08/13 07:58
12F:→ benqm300: 这需求根本不合理,换了只是自找麻烦 08/13 08:46
13F:推 rahit: 你们客户的程式不是写中文吗… 08/13 09:06
14F:→ rahit: 我也觉得i18n改掉就好 08/13 09:06
15F:→ rahit: 新成员教育一下就好 08/13 09:06
16F:推 vi000246: 改显示名称为什麽要改资料库栏位名啊? 08/13 09:30
17F:→ vi000246: 通常显示名称都写死在前端,或是用一个栏位另外存 08/13 09:30
18F:→ vi000246: 这样要改名时改那个栏位就好了 08/13 09:31
19F:推 wulouise: 多国语系本来就是分开的,客户说字串就去查多国语系 08/13 12:02
20F:推 viper9709: 名称尽量一致是对,但前端的显示名称要另外存 08/13 12:22
21F:推 lturtsamuel: 把 id 弄给使用者知道往往就会有这些狗屎事情发生 08/13 12:43
22F:→ ssccg: id和no调换这种事永远不该发生,发生了代表你一开始做错 08/13 12:59
23F:→ ssccg: 在你第一次听到XXX No.时,你就该确定这是那个domain通用的 08/13 13:05
24F:→ ssccg: 名词还是只是那个人的习惯说法,这个XXX No.实际指的东西是 08/13 13:06
25F:→ ssccg: 什麽性质,你是对domain设计不是在帮特定人拉资料库 08/13 13:10
26F:推 IamTD: 上面说的对,栏位名称应该是针对 domain 来命名 08/13 15:01
27F:→ IamTD: 前端要显示成什麽名称,是另外的事情,你把它弄成同件事情 08/13 15:02
28F:→ IamTD: 才会有现在的困扰 08/13 15:02
29F:嘘 accessdenied: 简而言之,设计不够抽象,你反而将实作绑死在UI上, 08/13 15:11
30F:→ accessdenied: 这就是你犯错的地方。 08/13 15:11
首先感谢各位的回覆与建议,其实我显示的文字与程式结构是有分开的
可以在不用变动程式码的情况下,修改i18n设定档,就可以调整显示的文字。
不过有两件事情我的确没有做到,或是比较难做到...
(1) 拒绝ID <-> NO 这个需求,我可能会被电爆 Orz
(2) 常常因为需求的急迫性,我的确没有去确认这个"名词"到底是代表
Domain还是该使用者的习惯用法 (Ex: 这个需求很急,下午就要用)
不过也想请问一下,回文中有提到的所谓栏位名称应该跟着Domain,
而前端显示是另外的事情。有点不太明白这个含意,是否有什麽例子呢?
再次感谢大家的解答!
※ 编辑: cloudgoogle (1.173.219.85 台湾), 08/13/2021 21:14:16
31F:→ hakama99: 画面显示完全跟DB不会有关联阿 08/13 21:43
32F:→ hakama99: 简单说你用同样DB 可以刻出完全不同介面的前端 08/13 21:44
33F:→ hakama99: 所以前端怎麽取名怎麽会被资料栏位影响呢 08/13 21:45
34F:推 lturtsamuel: 不可能系统整天随着变更名称的需求,就一起进行变数 08/13 21:48
35F:→ lturtsamuel: 或栏位名称修正 确实是这样 但你的案例不只是改个名 08/13 21:48
36F:→ lturtsamuel: 字 两个栏位都对调了 你不觉得这就反应了後端没有正 08/13 21:48
37F:→ lturtsamuel: 确消化domain的知识?你又何必一定要抱着设计错误的 08/13 21:48
38F:→ lturtsamuel: 资料库dchema 08/13 21:48
39F:推 wulouise: NO跟ID显示就应该是字串,为什麽跟资料库有关 08/14 11:38
40F:推 Abbee: 改显示名也不会差到天南地北呀,所以变数栏位不用改 08/14 12:26
41F:推 nayeonmywife: 我猜资料库关联没设计好,照理说你要有一个 系统ID 08/14 13:17
42F:→ nayeonmywife: 再来才是客户要求的ID,之後客户有什麽需求就不会动 08/14 13:18
43F:推 asdasdasd80: 两个栏位Label互换,但资料却不用互换,不是你搞错 08/15 02:27
44F:→ asdasdasd80: 就是客户弄错,你搞错的话让新人抱怨一下也就认了, 08/15 02:27
45F:→ asdasdasd80: 客户搞错的话就笑笑就好,反正改天可能又有各种理由 08/15 02:27
46F:→ asdasdasd80: 要改回来 08/15 02:27
47F:推 jennya: 推原PO,这问题蛮有趣的。能否更详细的描述一下xxx_no和 08/15 03:25
48F:→ jennya: xxx_id所储存的内容和格式是什麽、以及後来决议调换的理 08/15 03:25
49F:→ jennya: 由是什麽?我觉得这个问题的详细细节可以帮助讨论,因为 08/15 03:25
50F:→ jennya: 这样两个变数名称完全调换的例子真的蛮少见XD 08/15 03:25
51F:推 overhead: 推楼上。这题不是单纯一般更名,而是显现一开始的设计 08/19 16:43
52F:→ overhead: 有问题,整个系统没有清晰理解id no的定义。 08/19 16:43