@
lygmqkl 你说的都没错。
我对我自己说的话负责任,但是没法对别人因为我说的话产生的影响而负责任。
毕竟这里是讨论区,我觉得有互相不同的观点才是正常的。
那么我们就来看看你提到的这几点吧。
1. 文档,质量控制,版本控制,测试。
是的,是应该有这些。但是偏偏我司的系统就是没有。
去年来了个新员工, Ruby 老手,进来以后花了几个月时间分析和优化系统。
后来在各种注释里留下不少对之前员工的脏话后愤而辞职了。
如果你的系统这几点都能做好,当然不成问题。
但是不是所有的公司都能做到这样。就说自动路由,你能保证你对外暴露的接口都能完整地整理在文档里吗?
俗话说得好,代码才是最好的注释。显式申明你用到的路由本身就是一个精确反映实际的文档。
2. 路由在项目初期就定下来。
你开玩笑的吧,一个要做几年的项目的路由能一开始就定下来?
我们现在的系统就是 50k 行代码,前后写了七八年,经手的程序员几十人。
路由就是我 26 楼写的自动路由,前端界面往后端调用的时候直接 Call 到 Controller 上的方法。
(实际情况其实比这个还复杂点,但是和本题无关所以就不提了。如果想知道我可以再说下去。)
然而我们根本不知道前端到底用到了哪些后端方法。
所以每次动控制器的时候根本不知道哪些方法是前端会用到的,哪些是可以随便改动的。
3. 大项目拆分。
这个没错。但是有几个问题。
大项目不可能无限分割成微型项目。所以不可避免的有些项目还是有数千甚至上万行。
如果全部用自动路由,你还是得到处搜索函数名,确保没有奇怪的地方调用到你的函数,才可以改动结构。
除非你把所有的代码都从控制器里剥离出去,放在 Service 或者 Model 里。
然而这样的话控制器就成了实质性的路由文档了。
(并没什么不可以,如果架构师和程序员都靠谱的话,这样其实是不错的。)
(但是你并不总是能遇到靠谱的同事。)
4. 不知道你说的是什么。 26 楼的话,那个就是自动路由了。
最后说下利益相关吧。 PHP 从初中开始玩,那时候还只有 PHP4.x ,还没到谈框架的年代。后来 PHP5 了自己写了个框架,工作以后送给公司用了,后来成了公司的核心框架,虽然并没什么亮点。现在写 Rails ,在一个五六人的团队里一起做一个 8 年多的 Rails 1.x 项目,大概有 50k 行的量,虽然基本都是辣鸡。现代 PHP 我已经不会写了,弃掉 PHP 的时候 Composer 才刚刚出来,所以对 Laravel 了解不多,不确定显式路由是不是有坑,不过至少 Rails 里显式路由的规则数量我还是可以接受的。上文大多以 Rails 的角度来谈路由,如果 Laravel 有不同之处还请提出来。
谢谢。