Replies: 1 comment
-
代码优化我觉得更像是对于功能聚分类。以合理的数据结构对当前业务代码进行归类和分解。当数据结构的描述足够合理,那么代码自然会变得更整洁 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
📅 2022.02.23
Ice:
这种代码怎么优化一下
lencx:
策略模式
Ice:
什么意思
lencx:
额,或者 switch
lencx:
其实 if 也还好吧
Ice:
要写好长if
lencx:
其实这么写条件不好
Ice:
那我该怎么写
lencx:
最好是把校验规则抽象出来
lencx:
至于校验规则怎么抽象,需要看业务需求
Ice:
我就判断每一行的单元格不能为空保存的时候
张浩:
switch
张浩:
据说性能会很高
lencx:
其实我建议根据需求把规则做抽象,每个字段对应的校验文案其实是固定的,然后就是一个拼装问题
lencx:
但是过度抽象反而不如 if 这种更直白,所以需要自己权衡一下未来需求的迭代,保证一定的可扩展性
lencx:
其实就是做一个通用的校验器
lencx:
只需要接收数据源就可以返回校验文案
lencx:
以及是否通过的状态
lencx:
举个例子,看你这个截图,其实每个字段都对应一个文案,比如最高分,最低分,然后通过逗号连接,不能为空!
这就是规则:aaa, bbb, ccc 不能为空!
aaa, bbb, ccc 可以通过数组做收集
Ice:
是噢
张浩:
哦,然后封装一个方法,循环这个规则数组,如果有一项false,直接返回具体原因
张浩:
否则返回true?
lencx:
数组做收集,你只需要对字段做遍历就好了,不满足的就收集。
张浩:
哦哦
lencx:
这个看个人,实现方法有很多,我只是举例而已。
张浩:
好的学习了
柒冉:
学到了
lencx:
这样你可以针对分数写一个校验器,只接收数据源,然后返回处理结果,后期需求变更,只需要重新实现校验器即可。数据做好格式化输出。你的校验器对调用者来说就是一个黑盒。
张浩:
大佬,那如果是一个表单,里面有很多条件,那种校验应该如何封装比较好
张浩:
也要对每个字段分别封装吗
lencx:
一样的思路,核心思想就是做到:UI,Data, 业务逻辑之间的解耦。按照这个思路去拆。函数式编程思想。
张浩:
嗯嗯,我想下
lencx:
你抽象的东西就是一个黑盒,保证输入,输出源的一致性,内部怎么实现我并不关系。
张浩:
嗯嗯
lencx:
这个没有什么通用式,一站式解决方案,多写,多思考,自己慢慢就找到感觉了,当你觉得某个地方的代码特别繁琐,改起来很复杂,牵一发而动全身,一般就是对代码结构的思考有所欠缺了。
张浩:
嗯嗯
张浩:
感觉自己还是抽象的不够彻底,每次都是写完代码之后,发现,这地方为啥不抽个方法出来。。。。
lencx:
代码都是边写边优化的,过早优化,可能会导致扩展性不足。
lencx:
反而越改越麻烦
张浩:
嗯嗯
lencx:
写代码的一般流程:
先实现功能 -> 找代码共性 -> 思考优化 -> 重构
比较厉害的,可以根据自己的经验给未来的需求留出口子,方便扩展
张浩:
我都是写完之后就拉倒了哈哈,以后注意下,review一下[捂脸]
lencx:
虽然不可以一步抽象到位,但是可以边写边思考,边优化。这就是迭代。需求需要迭代,代码也需要迭代。
Beta Was this translation helpful? Give feedback.
All reactions