程序设计其实对程序开发者来讲十分重要,可是在工做中每每咱们却忽略了这一块,由于咱们所用的都是现有的模式。一个设计模式的好坏,每每可以体现出程序的专业性,还有整个项目的可持续性。这就是为何有些公司,在经历了若干年后突然重写整套代码的缘由,由于他们会发如今愈来愈多的需求的状况下,之前那些设计模式彻底不能知足了,或者说程序的复杂度和维护成本实在过高。最近我又看到了一个公司的项目设计,文档中写的还算优秀,但是总体的框架设计总以为还有差强人意。那么咱们又该怎样来设计咱们的程序,怎么减小维护代码的成本,怎样使框架可以知足不断增添的新需求或技术?设计模式是一个老生常谈的问题,并且有些技术员将其神乎其能,做为一个出来也有几年的人来讲,我也很感谢网络上许多朋友无私的知识分享,因此基于plainframe work(简称PF)的开源精神,就算是作成了商业版,我也将对接下来的设计模式彻底公开的分享给你们。html
设计模式(Design pattern)是一套被反复使用、多数人知晓的、通过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构同样。(这段来自百度百科)
一句话设计模式的产生和应用主要是方便代码的管理,以及节省维护的复杂成本。git
最近进入一家公司,该公司主要进行页游方面的开发,听说有一款比较不错的产品。抱着去学习的心态,那是由于本身以为技术还要须要不断的提升,还有就是别人的成功是否和技术有着直接的关系。由于来的日子并不太长,因此只能简单看到一些脚本层的东西,其脚本也就是你们所熟知的lua了。只不过在脚本层,他们进行了一些简单的封装,如本身写的加载文件的接口等。不过他们彷佛很聪明的把lua的扩展名改成.txt,这么别人一眼就不能看出这是一个lua脚本了。其次再看脚本的结构,我只是粗略的看了下,分为几个目录场景、配置目录、方法目录。乍看之下,目录层次仍是比较分明的,但是若是要找寻某个系统对于刚看不到一天的我来讲仍是以为十分吃力。一是服务端没有详细的目录介绍,彷佛你们的开发很随意,那个模块须要你十分熟悉了才能找获得。二是脚本调用结构不分明,调用C++和自身的一些方法没有必定的区分。最后说一点的就是,若是你须要找寻某个功能就须要问熟悉的同事,或者你须要将里面的代码从新梳理一次不可,并且注释极少,你很难看到那里是真正你应该去修改或是增长。看了这些后,对于赚钱的项目就有好的技术,我一会儿就完全的明了了。
鉴于上面的缘由,不少的开发者才那么以为应该进入技术较好的公司,诸如网易腾讯之流来提高本身。并且从这些公司流传出来的代码,可谓成为你们手头上以为十分厉害的香饽饽。其实麻烦是本身形成的,若是你们懂得合理运用比较好的设计模式,那么你也没必要去羡慕那些技术很牛的公司或是人。做为一个开发者,你们并无太大的区别,并且技术又是在天天在进步,旧的技术极可能会在下一刻更换,那么这个时候人人的机会都是平等的。
一种好的开发模式,必然会对从此的发展有着很大的帮助,若是你想要达到更高的层次的话,对于一名开发者,你就须要全面的去了解设计模式。如今市面上用的比较多的是工厂模式以及MVC的思想,工厂模式这是一个很古老的东西,在这里就不详谈了。而之因此将MVC称之为思想,那是由于早先这个模式是用在网页开发上的,特别是在一些大型语言JSP、.NET.ASP、PHP上。简单说一下在网页设计的三个东西:数据的处理(MODULE)、逻辑的处理(CONTROL)、界面的显示(VIEW),在WEB开发中一开始人们几乎是将这三者糅合在一块儿来作的,这样代码的可读性和重用性很是之很差。因此有人就这样将各自的分工独立开来作,就像早期的资本主义里的公司体系同样,没有统一的管理,分工很是不明确,效率很是之低。在网页中数据的处理通常指的是读写数据库的操做,逻辑的处理主要处理从用户操做所返回的一个系统的请求,好比说登录这些,须要处理验证密码、处理注册这些操做,而界面的显示主要负责客户端界面上能够直接看到的东西。
MVC的思想如今已经普遍的用在了各类设计上,包括在客户端也会用到这个思想,只不过数据的处理这块变成了内存的读写而已。不过对于MVC我的的理解是,它充分体现了面向对象的设计,更趋于人性化的管理。github
MVC基本的思想:数据库
除了工厂模式和MVC的思想,其实现有的模式还有不少,我在这里就不一一举例了。设计模式
任何设计模式都有其局限性,这里称之为改变的,实际上是指不要生搬硬套模式的思想。在设计的过程当中,咱们每每要这样想:这样设计可行吗?这样设计复杂吗?这样设计有没有后遗症?
弄清了三面的几个问题后,咱们再来讲目录结构的设计,目录结构尽可能的井井有条,可是目录嵌套的层数尽量的少,最好的设计目录的嵌套最好很差超过五级目录。由于太多的嵌套,会将整个目录看起来比较复杂,有的时候咱们宁肯使用文件前加前缀来作,如opencode_style.h、opencode_view.h这样,而不是将其分红目录(当前其前提是目录层级已是第五层了)。
再来咱们说说接口的设计,接口的设计看起来简单,由于他用不着关心怎么实现,但是从深一层来讲,接口设计其实并不简单。在一些比较大型的企业里,接口的设计并非通常程序能够随便能接触的,而是由专人去负责这个东西,并且这样的人,在公司内来讲是有必定的技术的(称之为大牛)。接口设计的重要性,主要是它是否是更灵活,是否是能够方便的扩展,是否是有更好的复用性?若是一个接口都同时知足了这三点,那么这样的接口算是比较好的了。用通俗的话来讲,接口主要是看可否在之后可以继续使用,就算出现了新的技术,这个接口是否能够灵活的适应。
最后说一下具体的代码设计,尽可能将逻辑的处理与数据分离,尽可能将消息的处理单独的放到一个地方统一进行。网络
开篇语
咱们没有大神,只有解决问题的人。
咱们没有强悍的技术,只有一颗向往简单的心。
咱们没有惊人的理论,只有一堆难以想象的妄想。
咱们不须要复杂,只须要够简洁。
咱们不须要固定的思惟,只须要你能想获得。框架
核心成员资格需求
一、精通或熟练掌握一门语言
二、可以接受和听从谷歌C++代码风格
三、灵活而大胆的思考问题
四、可以在规定时间段内完成本身分配的模块(能够灵活调度)
五、有坚持不懈的动力(很重要)学习
核心成员项目优点
一、无限制的使用商业版到本身的项目中,若是是别的项目则须要和全部成员商量
二、在过程当中,你能够获得飞通常的技术提升
三、商业版若是有盈利核心成员的利益将会最大lua
名额有限,若是你们想加入的话,请发送一段本身熟悉的语言利用plain framework(简称PF)风格的代码到邮箱viticm.ti@gmail.com,咱们将尽快的在15年前肯定人选,由于商业版的计划从15年1月份开始。spa
PF托管地址
https://github.com/viticm/plainframework1
PF安装教程
http://www.cnblogs.com/lianyue/p/3974342.html
PF交流QQ群
348477824