惊了 Java 转岗写 PHP 的都喜欢把代码写的这么复杂么

2018-05-19 16:10:47 +08:00
 KomeijiSatori

一个简单的从数据库里获取指定 APPID 下所有广告的接口,内部封装了一大堆神奇的东西

从数据库里拉取东西先要调用 getAdvertService 获取到获取广告的 Service,然后这个 Service 又要获取 AdvertLogic,然后 AdvertLogic 里又调用 AdvertPosLogic,然后 AdvertPosLogic 里才调用 AdvertPosModel 来连接数据库查询。。

然后我精简成几行代码还被吐槽了。。。

https://i.imgur.com/xi6Z0Fn.jpg

11464 次点击
所在节点    程序员
59 条回复
instein
2018-05-19 17:52:19 +08:00
盖高楼和盖小屋的方法, 本来就有所不同
bromineMai
2018-05-19 17:54:31 +08:00
@newtype0092
不用*也有这种问题,有个常见场景:给某个方法传一个记录对应的数组 /对象参数,以后加个新业务字段,不用*所有调用的地方你都要改。
接口字段泄露的问题相对来说其实很好处理,平时输出前 array_walk unset 下就好
Actrace
2018-05-19 18:18:39 +08:00
@ranwu 其实公司根本不关心这些问题。
Marfal
2018-05-19 18:26:05 +08:00
我想吐槽一下字体...
newtype0092
2018-05-19 18:28:35 +08:00
@bromineMai 那到也是,不过我还是觉得,在万一疏忽的情况下,少返回一点数据顶多前端显示 bug,算是体验问题,多返回数据可能会导致安全问题,更严重些吧。
而且清清楚楚写明白到底返回了那些字段比一个*看着清晰,别人或者一段时间后的自己来看更方便吧。
agoodob
2018-05-19 18:43:09 +08:00
@learnshare 不不不,是 2016 年左右的项目。media query 100%存在
agoodob
2018-05-19 18:44:05 +08:00
@learnshare 前面的留言里忘记写项目时间了哈哈,不好意思
learnshare
2018-05-19 18:51:07 +08:00
@agoodob 或许只是技术没有更新,这种问题也比较普遍
16 年还在用 jQuery 的项目也算是技术该更新了
xuwenmang
2018-05-19 18:52:12 +08:00
PHP 以前用类来封装的时候都被吐槽 PHP 就该有 PHP 的样子~
Hieast
2018-05-19 19:15:41 +08:00
过度设计变为简单设计容易,没有设计想做好设计难
zachlhb
2018-05-19 19:26:36 +08:00
分层书写,前期可能绝对很复杂,啰嗦,但是当项目越写越大的时候就知道这样写的好处了
freefcw
2018-05-19 19:26:58 +08:00
分几层的调用倒是没错,不过它这个也太多了点,一般而言有个三层差不多覆盖 80 的业务了,还是看业务需求实现
param
2018-05-19 19:36:07 +08:00
Java 转 Python 的好像也这样
lsls931011
2018-05-19 20:24:22 +08:00
我对你们无语, 这不是正常的么。 Web 后端是要分业务层、逻辑层、模型层、服务层互相调用, 为什么要这样写是为了方便以后的维护。 你说的精简代码就是 PHP 就是直接调用 PDO 从数据库获取数据是吧,可是你想想现在产品需求就是简单从数据库获取 APPID 下所有广告,那么你能保证以后产品不会针对这个接口提出更多需求, 到时候你说的精简反而给自己留下坑。 还有查询数据库尽量减少使用 * , 因为这相比较查询特定字段要慢得多
lihongjie0209
2018-05-19 20:29:04 +08:00
分层是没问题的, 但是分太多有点过度设计了
carakan
2018-05-19 20:36:20 +08:00
这个个锅..java 不背..只能说人有点思维定势...分层不假..接口过于细化..有点问题了(不按当前实际情况
linuxchild
2018-05-19 21:03:09 +08:00
hhha 让我想起来身边有 Java Coder 写的 Python 命名全部驼峰
watzds
2018-05-19 21:39:44 +08:00
Java 很多人每个 DAO 对应一个 service,这种我是不喜欢的,方法还一样
AccIdent
2018-05-19 21:45:55 +08:00
楼上说的挺多了,但是有一点没有提到,如果不做封装不做分层,测试代码还写的下去吗?楼主可以从这个角度考虑下
simo
2018-05-19 22:19:17 +08:00
不谈应用背景,没有意义。
简单的按照业务量来分大、中、小工程,即使同一个框架,分层设计也会不同

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/456148

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX