代码有重复不应该想尽办法去除重复吗
当然可以。定义一套DSL查询语言就好了。比如ElasticSearch
■网友
如果写过Java或者C#,会发现能独立出来的逻辑,不独立出来,能用变量的东西,直接代入固定的字符串或者值,当项目要重构,或者要升级,工作量会很大,而且容易出错。Go语言的抽象能力很弱,很古板,除了一个 interface 和 反射,在函数和方法的设计上都有很大的局限性。甚至想要写一个能囊括所有数值类型的帮助包,都很难。但本身抽象设计,也要付出一定的代价。弹性大,所谓面向对象编程,对于一些小的项目,简直就是狗屁。回到楼主所说的问题。我觉得如果数据库的查询逻辑,已经分离好,易于维护,或者说,项目的变动性不强。我觉得三个逻辑集中处理更好。只需要甄别客户端请求的方式,用统一的逻辑回复数据。无论是实现还是以后维护都有很多好处。但如果项目的变动性大。在不久的未来,或者要插入额外的数据统计或者分析上的功能。Go 语言把很多逻辑搅在一块,加上不停的 if 判断,会很不好维护和重构。我觉得用Go 语言做东西,最好把一个逻辑切割成不能再分的固定组件,放在不同的包里,第一个是避免变量,常量,或者方法不小心被重复命名或者重复赋值的风险,第二个是弥补抽象能力不足带来的维护难度。
■网友
不要仅仅因为代码相似就去做抽象。抽象应该是基于更高层次的逻辑的。如果逻辑上的确是一回事,那就应该抽象。如果逻辑上不是一回事,仅仅是代码长得像,就不要抽象。否则等以后情况发生了变化,代码长得不像了再来拆分,徒增工作量和风险。
■网友
重用代码最基本的机制是函数,把后端、时段起始都做成函数参数即可,不需要接口
■网友
个人认为数据库操作方面做个抽象是可以的,但是把三种查询统一起来确实没有必要。三种查询语意上的共性不强,尽管当前结构相似,但不是相互可以替代的同质品。过度设计会让后来人以为里面有特殊含义,维护时投鼠忌器。复用逻辑,目的不是让代码看起来清爽,而是让修改能够低成本地传播开来。如果不用考虑日后的修改,那么怎么写并无所谓。就题主的情况来看,日后的修改恐怕更多是个别的,例如要调分时分日都访问MySQL,但是后者要更高的权限检查什么的…
推荐阅读
- 怎样对别人的代码进行适当修改使他永远也找不到问题出在哪
- 异乡好居说程序员删除代码是未经证实的传言吗
- 论开源软件的利弊有哪些
- 这段代码中对 vector 的访问为啥不会越界
- C语言指数函数代码
- 学计算机就是当码农吗
- 皮卡|经典不应该被终结,盘点三款即将被“复活”的经典老车!
- 实习程序员第一个月除了看别人的代码还能干啥
- 代码背后有哪些温柔和浪漫的故事
- 请问这段代码是啥意思,从一个仿造网站上下载的软件里面的,对电脑有危害吗
