接上文《怎样写好代码(二) 》

接口设计描述的总分代码结构是平面的,假设该结构是在坐标系中的x和y纬度,那么类怎么布局,就是在z纬度。合理布局每个类才能使得代码更加优雅,这里不讨论设计模式使用技巧。设计模式的本质也是分层,比如创建型模式中的工厂模式、结构型模式中的代理模式、适配器模式,行为模型中的命令模式、观察者模式等等。通过创建一个或多个层次出来中介、封装、传递变化。那么在使用时,对于有变化或复杂部分,我们只要分层独立出来,无论是什么情况,都是很好的设计模式。

面向对象编程中最主要是哪些方法放在哪个类中。很多同学会创建类、会封装方法,但方法放置得不对,也使设计失去面向对象优势。首先,我们需要抽象对象,对象肯定是由数据和方法组成。首先可以将业务聚集较强的属性封装成对象,如用来传输的TO、持久化的PO等将一些固定在一起的数据形成对象。其次,抽取业务实体为程序对象。然后由属性形成方法,方法肯定存在于它所使用的数据所在的对象中,即数据和方法是绑定在一起的。常常看到一些不好的设计,有个方法处理一些数据,而这个数据完全是参数传进来的。合理的做法是把这个方法放到参数对象中去,这样代码逻辑不会散落各处,对象会更加聚焦。随着项目推进代码的整洁度和复用性会越来越好。另一方面,在抽象类和拆分方法时,一定要做到属性和方法在类中达到闭合。比如说,各个方法之间一般都是完全独立,不要把一件事分散到2个方法中,且这2个方法之间存在某种关联。

上述都是思想层面,最终肯定要落实到一字一行的代码中。这些代码细节的常常在工作和学习中积累,如面向接口编程、异常断言、合理使用缓存和数据结构、代码自解释、防御性编程、重构技巧、函数式编程。另外复用第三方库,避免重复劳动。

夸奖对方代码写的好_怎样写好代码(三)相关推荐

  1. 夸奖对方代码写的好_我写出这样干净的代码,老板直夸我

    一份整洁的代码对于一个系统是多么重要.如果代码写的乱七八糟,最后的结果就是无法对这些代码进行有效的管控.很有可能会毁掉这个系统. 什么才是整洁的代码? Biarne Stroustrup -[C++语 ...

  2. 用java写ods系统_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...

    TableGo是基于数据库的代码自动生成工具,低代码编程技术的实现,可以零代码自动生成SpringBoot项目工程.生成JavaBean.生成前后端分离的CRUD代码.生成MyBaits的Mapper ...

  3. coverity代码检测工具介绍_兴业证券:静态代码检测最佳实践

    一. 引言 谷歌发布的代码规范中指出,80% 的缺失是由 20% 的代码所引起的.规范的代码可以消除过于强烈的个人风格,有助于代码在项目间高效的流转:提升代码的正确性,降低低级问题产生的可能性:同时也 ...

  4. python代码怎么弄颜色_布局背景颜色代码在python3中如何写?

    我们想要给某个模块着重突出,以便引起大家注意的时候,通常给那个模块的背景颜色换亮一点.这种情况的操作多见于我们想要突出表格中的某个数据,或是某一项的名称.在python3中设置布局背景颜色需要通过代码 ...

  5. python怎么写出来的_如何写出优雅又地道的Python代码?【转载】

    在Python社区文化的浇灌下,演化出了一种独特的代码风格,去指导如何正确地使用Python,这就是常说的pythonic.一般说地道(idiomatic)的python代码,就是指这份代码很pyth ...

  6. 用java写2468游戏_自己写游戏——东渡教你用Java编写2048完整代码

    原标题:自己写游戏--东渡教你用Java编写2048完整代码 2048作为一款益智类的小游戏,相信很多人都玩过,小编今天就教教大家怎么用Java代码给它完美重现,下面是用eclipse开发的2048完 ...

  7. 用java代码写美国时间_如何衡量Java代码所用的时间?

    本问题已经有最佳答案,请猛点这里访问. 我需要分析Java中的一些算法的复杂性.为此,我计划提供大量的输入,并测量Java实现所花费的时间.检查某些代码行之间的时间最精确和准确的方法是什么?我需要精确 ...

  8. 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...

    代写CO 353课程作业.代做Python程序设计作业.代写Python语言作业 日期:2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ' ...

  9. python写出表白_简单python 表白代码

    # 导入模块 import turtle # 人 turtle.penup() turtle.goto(-100, 100) turtle.pendown() turtle.color('yellow ...

最新文章

  1. OpenCV中SVM的使用
  2. word自动消除html标签,清理Word生成HTML的冗余;清理与清除HTML标签
  3. DPDK — 数据平台优化技术
  4. 轻量级实用PDF转换工具
  5. mysql 内存监控_mysql cpu和内存监控
  6. Android之mediarecorder中的方法以及工作流程的过程
  7. Modularity(模块化-无模块化)
  8. The Internet Communications Engine (Ice) 跨平台异构通讯方案 第二弹-Hello world!
  9. Flex显示图片的常用方式
  10. Docker (一、dockerfile-node.js)
  11. 用一句位运算判断两个整数的大小并返回较大者
  12. ---PHP中的OOP--面对过程与面对对象基础概念与内容--(封装、继承、多态)...
  13. Spark SQL概念学习系列之Spark SQL入门(八)
  14. 产品功能树图_新版PFMEA培训之第三步功能分析,理清结构,梳理思路
  15. MATLAB中simulink的模糊PID控制
  16. C++学习笔记 —— 回合制小游戏案例
  17. 深度至尊 GHOST XP SP3 纯净版 V4.0
  18. [02-27][08奥斯卡四项大奖][老无所依][DVD中英双字][已测][17:21]
  19. 二维码登录原理+Web端即时通讯技术
  20. Win10获取C盘所有权限,所有者TrustedInstaller 变更administrators【强行更改权限有风险,请谨慎使用,初次更改后windows建就打不开开始栏了】

热门文章

  1. mysql 过程 的函数的区别是什么意思_Mysql中存储过程和函数的区别是什么
  2. x86虚拟机NXVM_Centos6.5 x86_64系统安装kvm虚拟机—基础篇
  3. nginx 限制上传文件大小
  4. 【微信小程序】 自定义导航栏(navigationStyle=custom)
  5. selenium更改页面元素
  6. 以下计算机网络的功能正确的,西工大18春《计算机网络》在线作业【参考答案】...
  7. android 带记忆功能的播放器源码,【全开源可二开】带后台管理面板的在线音乐播放器Android应用APP源码...
  8. java query api_ElasticSearch(十二) Bool Query JAVA API
  9. linux 显示文字在桌面背景,Linux下Xwindow的字体配置(所谓的字体美化)
  10. button标签设置隐藏和显示_离职后我隐藏一张工作表,老板找了一天没找到