作者AnyaAlstreim (Mordred)
看板java
标题Re: [问题] 要如何使用 enum 代替阵列的下标
时间Fri Dec 6 14:15:16 2013
万分感谢你的回应。
这篇解释一下我的想法...
※ 引述《PsMonkey (痞子军团团长)》之铭言:
: 其实我本来不想回的 [被殴飞]
: ※ 引述《AnyaAlstreim (Mordred)》之铭言:
: : 大家好,我是 Java 新手。
: : 我在写 Android 专案时遇到一种情况:
: : 如果有五个按钮,内容分别为以下
: : 【 精华公布栏 】
: : 【 我 的 最爱 】
: : 【 分组讨论区 】
: : 【 私人信件区 】
: : 【 休闲聊天区 】
: : 然後 code 这样写
: : Button[] button = new Button [5];
: : button[0] = ...;
: : button[1] = ...;
: : ...
: : button[4] = ...;
: : 这时候会有可读性和易维护性的问题,例如想在最开头加上一个新的按钮
: : 【 个人设定区 】
: : 那後面的 button 下标就要全部往後移了。
: 这个算插花外提
: 其实我不懂为什麽会有这个问题
: 我不知道 Android 的 Button 有没有什麽特别
: 我是用 GWT(Swing 应该也差不多)的 Button 来举例
: 那麽,我会...
: String[] btnLabel = {"个人设定区", "我的最爱"};
: Button[] button = new Button[btnLabel.length];
: for (int i = 0; i < btnLabel.length; i++) {
: button[i] = new Button(btnLabel[i]);
: }
: 不考虑 UI / UX 等等三小排版问题
: 易维护性应该不是问题?
: 可读性... 先跳过,後头再说
: 剩下的问题就在於... 什麽时候你会需要知道 button 的 index?
: 至少在你提出来的这个部份,我看不出来
: 然後那个可能岔题岔更远了......
我说的情况,就是不想用 0, 1, 2, ... 这个 magic number 当阵列的 index,
然後没办法用 for-loop 直接 run 整个 Array,
也就是对每个 button 都有不同的处理方式。
至於不用 Array 就好,这的确是一个解法。
: : 之後就可以使用
: : button[ANNOUNCE]
: : 来取代 index
: : 推 cyberwizard:可读性看写法而定 http://goo.gl/KjyhxE 12/06 04:32
: : → danny8376:每个button各自有变数名不行吗? 12/06 06:15
: : → AnyaAlstreim:楼上,可以。 12/06 10:42
: : → AnyaAlstreim:我也没有写 Android 经验,这样写不好吗? 12/06 10:46
: : 推 PsMonkey:扯到可读性,基本上就跟平台没关系了 Zzzz 12/06 11:26
: : → AnyaAlstreim:楼上..... http://goo.gl/Q7AagW 12/06 12:10
: 你拿 Linux kernel coding style 出来
: 其实我有点(根本就)不明所以
嗯... 好吧,
我承认我是看到你那串 z,以为你是巴哈屁孩就随便找个 project 的 style 敷衍过去。
我说那样的话,的确有我的失误,
因为本来我不觉得这问题会跟 Android 平台有什麽关系,
但是看到 Button 不用 Array 当下以为可能是 Android developer 不这样写,
然後又不想因为一个不确定问题的问题再去 AndroidDev 发问,索性直接底下推一句。
事实上原来是没有 Java programmer 这样写,嗯... 我搞错了。
: 主要的原因,底下 danny8376 大人说的差不多了,我就跳过
: 我回应你的是「没有写 Android 经验」这句
: (这再次说明了推文没办法好好讨论 [被殴飞])
: 当然,如果你觉得你的问题真的 dependent on Android
: 那依照版规,我建议你出门左转到 AndroidDev 版
: 当然,我完全不觉得这个问题不能在 Java 版讨论
: 就如同我推文说的(然後延伸一下)
: 单纯论「可读性」这玩意
: 那跟 Android / Java 甚至 C 一点关系也没有
: 因为那纯粹是「人」的问题
: 这样说好了,对电脑 / compiler 而言,有可读性的问题吗?
: 没有,只有 compile 过不过、以及效率的问题
: 所以,可读性好不好,是「人」判断的
: 既然是人判断,除了客观因素(各种 coding style 可称为客观因素)
: 可能绝大多数都是主观因素
: (钱锺书:所有的客观都是伪装巧妙的主观)
[Susan]
不过我觉得... 我想像中的问题跟你说的不太一样。
你花了好大篇幅说了可读性问题只是个人爽度问题,
// 贫乳大好!(羞)
不过我除了可读性以外还提了易维护性的问题,这就不是主观因素了吧,
所以并没有这麽的没有讨论性呀。
我的问题在於希望得到易维护性所以使用 enum,但是使用 enum 就失去了可读性。
至於要说此例使用 Array 没有易维护性可言的话,
嗯,的确,这也是我的失误,我的问题是基於使用 Array 的情况下,
但我没有想过在这里使用 Array 本身就不好。
不过有点好奇想知道,真的没有非用 Array 不可的情况吗?
感谢大家的回应!
以上。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.66.250.25
1F:→ danny8376:当你需要大量重复的元件的话 Array理所当然 12/06 15:44
2F:→ tkcn:没有,因为至少还有 HashMap 可以代替。 12/06 16:08