之前也没有深入意识到它的重要性。直到后来,去接手一些遗留系统,那种混乱,寻找代码和代码文件多么费力。系统通过了不少人手,人员调岗,人员离职。每一个人都有本身的风格,折腾一下,就闪了。丢下一个千疮百孔的系统。php
人的眼睛是相信现实的东西,没有经历过那种坑,就没法理解。因此当咱们怎么说要规划好目录结构,要好的命名方式,一些技术都不觉得然。包括我之前也同样,我之前可以接受好的东西,可是我没理解,就不会有深入发自自觉性去这样作。心里只是想:这个问题不大吧。css
由于现实案例最让人印象深入。总结一下遇到的问题nginx
上面两个是比较坑人的目录结构,接手的人员太多了,加的目录也重复。程序员
-------------------------------------------------------api
后面这个系统使用mvc框架,相对好,可是也出现不清晰的地方,暂时系统的功能不是不少,因此目录不多,看起来很清晰。可是,随着时间的推移,加的功能愈来愈多,才会看起来混乱。缓存
好比:上面这个curl目录就不太好。不该该放到根目录下的。这样会给人误导,使得接手的技术,某天增长新功能,也会新增长一个文件夹放到根目录。那么,后面功能加的多了,你们都会这样子作。架构
那个时候才去思考解决办法。我一直在想,怎样才能让项目在可控的范围内呢?
出现问题的缘由是什么
虽然好的风格在业界都是有共识的。但为何形成那么混乱的系统。缘由是什么呢?
有人说缘由是:各个技术人员水平不同。因此这个问题很难解决。一筹莫展。
也有人说,缘由是,系统经受的人太多了。这个技术维护一段时间,而后另外一个技术维护一段时间。这样就形成了千疮百孔。除非公司保证技术人员的稳定性,但这个很难。因此这个问题也很难解决。
仔细,深刻去思考。我在想,这些都只是代表上的缘由。难道由于这样就没有解决办法吗?
如何解决,不少人也有本身的想法,概括起来有:
一、要求系统维护人员遵循风格统一。写好规范文档。让你们按照规范来作。提交修改代码,须要进行代码审核,但是这须要成本。一个中小型公司,技术人员有限,都是忙着开发功能去了,抽出时间来审核代码(哪怕是大致审核),也是须要时间投入的。
因此现实状况是,进行代码审核,在不少公司每每作不到。
二、成员培训。归根结底仍是要放到人的自觉性上去。因此要常常给你们灌输好的风格意识,进行培训。这个方案其实有效果。具体得依赖于团队技术领导本人的我的影响力,能不能以身做则,用代码示范影响到成员。因此仍是依赖于某一个经验丰富且有影响力的人,一旦缺了这我的,就会致使人心涣散。尤为是当这我的若是离职怎么办呢?
上面办法都是正确的。可是会有阻碍和困难。我在想,能不能作到不依赖于某个特别的人而让团队成员自觉作到呢? 而且,可不能够,忽略掉团队成员技术水平的差别性呢?
根据心理学,就是示范效果。虽然你们水平不同,可是看到一个好的示范,会不自觉的遵照。另外就算其不遵照,也会感到没法使用。本身都会感到羞耻。
好比mvc的框架,定好了controllers,views,models,后面刚入门的人,都能按照目录结构去加代码。
具体要作的是:对系统的代码和目录预先设计好。规划好目录结构。什么目录放哪一种类型的文件的。
之前听过一句话说:架构师的目标就是让程序员变得更加不用很费不少精力,按照预先规划设计好的方式去作就能够。
如今看来这个很是有道理。
心理学:若是已经有的东西是混乱的,那么也会以为痛苦,干脆凑合一下算了
作系统前,把系统的规划好mvc
不规划好,后面接手的人就会不知道标准。app
安装目录包括一下几个文件夹:框架
安装目录/public/
安装目录/app/
安装目录/cache/
说明:
一、public目录下是对外开放的目录。也就就是nginx配置指向的目录。目录里面的子目录接下来在详细介绍
二、app,全部源码存位置。
三、cache,模版编译缓存存放到这个里面。为何要放到这个里面呢?
public目录下的子目录
public/index.php
public/js/
public/images/
public/css/
app目录下的子目录
app/controllers 控制器文件
app/models 模型文件存放目录
app/views 模版文件目录
app/config/ 全部的配置文件存放
app/library/ 全部的公共库文件。文件夹名称也能够命名为lib,就是library单词的简写。
app/logs/ 日志文件目录。php代码记录的日志信息
app/api/ 里面放一个sdks文件夹。全部的sdk放入里面去。每一个sdk一个文件夹。好比sdks/pmsSdk/ sdks/memberSdk/
app/tools/一些工具放入到里面去。好比定时脚本,则放入task文件夹中去。app/tools/tasks