- 注册
- 2018/12/23
- 消息
- 352
- 金粒
- 159金粒
在最近的LXL版本中,LXL新增了Format(Text)类,初衷是为了解决
不可否认的是,此类似乎的确解决了这些问题
但为什么我不建议大家在开发过程中使用该类并且反对该类存在呢?
1 没有必要
首先,MC的样式代码方案的两个问题并非致命,也并非完全不可由个人解决。加载器API提供这个功能是非常累赘的,而且它完全可以让脚本自身实现。
另外,作为一个开发者,可不能这么矫情。
2 无端增加代码体积
拿LXL文档里的例子说:
在这里,不理会表达所必要的Format.XX。一共多使用了7个加号,算上缩进多了21个字符。而使用原版MC方案只需这样:
一共长了多少,你自己算吧,如果说此类有利于增加代码可读性,那么无端增加代码体积同样降低代码可读性。
3 无端增加加号使用和API调用,降低性能
RT.
如果你说这对性能影响微乎其微,那么《韩非子》里有句话说:千里之堤,溃于蚁穴。
4 阻碍插件国际化
这是最坏的影响。
LXL的插件如果可以全部支持i18n,那么其对国内外BDS圈影响是不可估量的,在现在,插件国际化可以说是一种必然趋势。
该类如何伤害i18n呢?
我们平常实现插件i18n只需这样:
你可能已经明白了,这个简单的国际化如果使用Format类实现:
这是很反人类的,而且百害而无一利。如果开发者在开发插件的时候没有考虑国际化,大量使用Format类,后期如果想对插件进行国际化.......
总结与建议
Format类明显弊大于利,如果开发者一开始就走上歪路,后果不堪设想。我在此类刚提供的时候就坚决反对加入此类,无奈最后还是被保留。如果LXL仍不删除此类,那我也没啥办法,只能希望各位开发者尽量避开这玩意了。
这一篇文,是我的个人看法与观点,如果留言讨论,请注意言辞并准备好论据,友善交流。
§
打字困难和MC颜色代码(数字)难以记忆和辨认的问题。不可否认的是,此类似乎的确解决了这些问题
但为什么我不建议大家在开发过程中使用该类并且反对该类存在呢?
1 没有必要
首先,MC的样式代码方案的两个问题并非致命,也并非完全不可由个人解决。加载器API提供这个功能是非常累赘的,而且它完全可以让脚本自身实现。
另外,作为一个开发者,可不能这么矫情。
2 无端增加代码体积
拿LXL文档里的例子说:
JavaScript:
mc.broadcast(Format.Red + Format.Bold + "Red & Bold " + Format.DarkGreen + Format.Underline + "DarkGreen & Underline" + Format.Clear + "Clear");
JavaScript:
mc.broadcast("§c§lRed & Bold §2§nDarkGreen & Underline §rClear");
3 无端增加加号使用和API调用,降低性能
RT.
如果你说这对性能影响微乎其微,那么《韩非子》里有句话说:千里之堤,溃于蚁穴。
4 阻碍插件国际化
这是最坏的影响。
LXL的插件如果可以全部支持i18n,那么其对国内外BDS圈影响是不可估量的,在现在,插件国际化可以说是一种必然趋势。
该类如何伤害i18n呢?
我们平常实现插件i18n只需这样:
代码:
-> zh_CN.lang
example.text=§a你有 §1%1§r§a 元
-> 插件.code
sendText(_tr("example.text"),player.money)
代码:
-> zh_CN.lang
example.text=%1你有 %2%4%3%1 元
-> 插件.code
sendText(_tr("example.text"),Format.Green.Format.DarkBlue,Format.Clear,player.money)
总结与建议
Format类明显弊大于利,如果开发者一开始就走上歪路,后果不堪设想。我在此类刚提供的时候就坚决反对加入此类,无奈最后还是被保留。如果LXL仍不删除此类,那我也没啥办法,只能希望各位开发者尽量避开这玩意了。
这一篇文,是我的个人看法与观点,如果留言讨论,请注意言辞并准备好论据,友善交流。
最后编辑: