资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

从零开始学设计模式第三天之怎么判断代码是面向过程的-创新互联

  • 实际开发中,哪些代码是属于面向过程的,需要注意的:

    成都创新互联-专业网站定制、快速模板网站建设、高性价比城中网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式城中网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖城中地区。费用合理售后完善,十余年实体公司更值得信赖。
    • 滥用getter、setter方法:有时候,开发完一个类之后,有些人就会顺手把getter、setter方法定义上,不管有没有用到,实际上这是面向过程的编码风格,因为它违背了面向对象编程的封装特性,封装的意义是为了通过访问权限控制,隐藏内部数据,外部仅仅能通过类提供的有限的接口访问、修改内部数据。所以,随意的暴露setter、getter方法,违反了封装特性,数据没有访问权限控制,任何代码都能够随意修改它,代码就退化成了面向过程编程风格了。

  • 滥用全局变量和全局方法

    • 开发项目中常见的全局变量包括

      • 单例类对象:单例类对象在全局代码中只有一份,所以相当于一个全局变量

      • 静态成员变量(比如说类变量):被所有实例化对象共享,也相当于一定程度上的全局变量

      • 常量:一种非常常见的全局变量,比如说一些代码中的配置参数,一般都是设置为常量,放到一个Constants类中

      • 静态方法:静态方法一般用来操作静态变量(比如说将类变量传进去拼接)或者外部数据(将外部的变量传进去做拼接),这里静态方法将方法与数据分离,数据是传进去的或者有可能从别的地方获取,破坏了面向对象的封装性,是典型的面向过程风格

    • 常量类Constants类中,怎么违背了面向对象

      • 一般来说,在开发的项目中,程序中会把所有用到的常量都集中地放到这个Constants类中。不过,定义一个如此大而全的Constants类,实际上不是一种好的设计思路

        • 会影响代码的可维护性:因为开发过程中,可能很多地方都要设计到这个类,随着项目的开发,这个类会变得臃肿,这样子,有时候查找或者修改某个常量也会变得比较费时,还会增加提交代码的冲突概率

        • 会增加代码的编译时间:随着项目开发,依赖这个类的代码会很多。每次修改Constants类,都会导致依赖它的类文件重新编译,会费时间

        • 会影响代码的复用性:有时候,我们在另一个项目中,需要复用本项目的一个类,而这个类又依赖Constants类。即便这个类只依赖Constants类中的一小部分常量,也需要将这个类都引入另一个项目,很多其实都是用不到的

      • Constants正确设计思路

        • 将Constants类拆解为功能更加单一的多个类,比如说跟Mysql配置相关的常量,放到MysqlConstants类中;跟redis配置相关的常量,放到RedisConstants类中。当然,其实更好的思路是,并不单独设计Constants常量类,而是哪个类用到了某个常量,就把这个常量定义到这个类中。比如说,RedisConfigs类用到了Redis配置相关的常量,就直接将这些常量定义在RedisConfig中,这样也提高了类的内聚性和代码的复用性

    • Untils类往往只包含静态方法不包含任何属性,是彻彻底底面向过程的编程风格,那是否就要杜绝呢?

      • 实际上,Utils类在项目中还是很实用的,当我们定义Utils类时候,要思考是否可以把这个类的某个方法定义到其它类中,如果不行的话就定义,另外,在设计Untils类的时候,最好也细化一下,针对不同的功能,设计不同的Untils类,比如说FileUtils、IOUtils、StringUtils等,不要设计一个大而全的Utils类。

    • 定义数据跟方法分离的类是面向过程的风格,但是常用的web开发模式就是这样的,这种叫做基于贫血模型的开发模式,后面再展开来讲

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


当前文章:从零开始学设计模式第三天之怎么判断代码是面向过程的-创新互联
转载来源:http://cdkjz.cn/article/cosdej.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220