首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻

概述 本文是继《编写代码的「八荣八耻」(上篇)》和《编写代码的「八荣八耻」-以开关上线为荣,以自信编码为耻 》之后,编写代码的「八荣八耻」系列的第三篇。...WHAT 编写代码的「八荣八耻」 1. 产品命名:以简单有趣为荣,以平庸难记为耻。 2. 单个方法:以短小精悍为荣,以冗长费神为耻。 3. 代码维护:以持续重构为荣,以停滞不前为耻。 4....编程思想:以面向对象为荣,以面向过程为耻。 5. 程序设计:以开关上线为荣,以自信编码为耻。 6. 接口定义:以用户易用为荣,以复杂歧义为耻。 7. 断言分支:以实时报警为荣,以忽略分支为耻。 8....报警策略:以定时调整为荣,以放弃维护为耻。 WHY 面向对象的设计中,之所以要抽象成接口,而不直接面向实现类。主要是基于「抽象比细节更长久」的理论基础,实现类可更改可替换。...以按业务定义为荣,以按技术定义为耻 其实静儿在写代码的时候经常写这样一种实现:定义一个XXXBuilder,入参是一个XXXXOption类。这是一种常见的设计模式。

60840

编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻

概述 本文是继《编写代码的「八荣八耻」(上篇)》和《编写代码的「八荣八耻」-以开关上线为荣,以自信编码为耻 》之后,编写代码的「八荣八耻」系列的第三篇。...WHAT 编写代码的「八荣八耻」 1. 产品命名:以简单有趣为荣,以平庸难记为耻。 2. 单个方法:以短小精悍为荣,以冗长费神为耻。 3. 代码维护:以持续重构为荣,以停滞不前为耻。 4....编程思想:以面向对象为荣,以面向过程为耻。 5. 程序设计:以开关上线为荣,以自信编码为耻。 6. 接口定义:以用户易用为荣,以复杂歧义为耻。 7. 断言分支:以实时报警为荣,以忽略分支为耻。 8....报警策略:以定时调整为荣,以放弃维护为耻。 WHY 面向对象的设计中,之所以要抽象成接口,而不直接面向实现类。主要是基于「抽象比细节更长久」的理论基础,实现类可更改可替换。 ?...以按业务定义为荣,以按技术定义为耻 其实静儿在写代码的时候经常写这样一种实现:定义一个XXXBuilder,入参是一个XXXXOption类。这是一种常见的设计模式。

60530
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Python语法】Python中为自定义类编写help文档以及进行文档测试

    参考链接: Python help() 一 以注释方式为类添加帮助文档          我们知道,Python中可以使用help('模块名')或者help(类名)的形式来查看一个模块或者类的帮助文档,...我们也可以为自定义的类添加帮助文档,并用help进行查看.Python中用三对双引号可以进行多行注释,当我们把这种注释内容放到一个类或者函数定义的下面时,它会自动被当作该类或者函数的帮助文档.请看下面的类...        1         >>> mt.add(2.4,1.5)         3.9         """         return x+y          我们用三对双引号对类和其成员函数...add进行了注释,那么我们就可以通过下面的方式查看该模块和类的帮助. ...     |      >>> mt=MyMath()       |      >>> mt.add(1,2)      |      3      |      >>> mt.add(3,-2) 查看类MyMath

    1.5K30

    Java开发中PO、VO、DAO、BO、DTO、POJO 含义

    MVC的简单定义: M层负责与数据库打交道; C层负责业务逻辑的编写; V层负责给用户展示(针对于前后端不分离的项目,不分离项目那种编写模版的方式,理解V的概念更直观)。 ?...Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载...业务复杂,人员协同性要求高的场景下,这些规范性的东西不按着来虽然不会出错,程序照样跑,但是遵守规范会让程序更具扩展性和可读性; 让类语义更明确,很容易知道类的含义; 其实就是提升项目的可扩展性、可维护性与可阅读性...(也可DO) 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 展示对象:xxxVO,xxx一般为网页名称。 业务对象:xxxBO,xxx是业务名称。...哪些类是POJO类还是有说法的,需要同时满足以下几个条件: 不实现任何接口的类。 不继承任何其它类的类。 不使用任何外部注解的类。

    90370

    springboot第6集:PO、VO、DAO、BO、DTO、POJO 能分清吗?

    领域模型命名规约: 数据对象:xxxDO,xxx即为数据表名 数据传输对象:xxxDTO,xxx为业务领域相关的名称。 展示对象:xxxVO,xxx一般为网页名称。...POJO (Plain Old Java Object): 简单的 Java 对象,是一个特定类型的类,没有任何限制或附加条件,可以用于表示各种数据。...减少网络负载:DTO 对象可以减少网络负载,因为它们只包含最小必要的属性信息。这使得数据传输过程变得更加高效,特别是在分布式系统中。...在实践中,DTO 对象通常由开发者手动编写,这些对象的类型和属性应该与业务逻辑密切相关。DTO 对象应该尽量简单,并且只包含必需的属性信息,避免数据冗余和网络负载过大的问题。...POJO 对象通常不包含任何专有的基类或接口,也不需要遵循任何提前定义的规则或契约。 POJO 对象主要具有以下几个特点: 简单性:POJO 对象非常简单,通常只包含数据属性和访问方法。

    1K21

    springcloud学习笔记:认识微服务,谈资,技术的迭代演变,支付模块为例 体验demo

    微服务允许你利用融合最新技术 微服务只是业务逻辑的代码,不会喝html,css或其他的界面混合 每个微服务都有自己的储存能力,可以有自己的数据库,也可以有统一数据库 缺点: 开发人员要处理分布式系统的复杂性...配置文件 yml 主启动类 编写业务类 测试 一般来说都是这个几个步骤 那我们跟着来 首先是创建模块 之后引入需要的依赖 <project xmlns="http://maven.apache.org...mapperLocations: classpath:mapper/*.xml type-aliases-package: com.atguigu.springcloud.entities 编写业务类...}else { return new CommonResult(444,"没有对应的记录,失败,查询id"+id,null); } } } 编写主启动类...springboot中有很多的template供我们使用 这里我们要用到的就是其中的resttemplate 他和网络编程中的httpclient有异曲同工之妙 这里我们需要编写一个config类

    43320

    还有人不知道?Spring MVC的数据绑定来了

    通过一个用户注册案例,来演示POJO类型数据的绑定的使用: 创建用户类POJO,来封装用户注册信息; 在控制器中编写注册方法; 创建用户注册页面; 启动Web项目,访问http://localhost:...下面通过一个订单查询的案例,来演示包装POJO数据绑定的使用: 创建订单包装POJO,来封装订单和用户信息; 创建订单控制器类,在控制器中编写查询订单信息方法; 创建订单查询页面; 启动Web项目,访问...即在包装类中定义一个包含用户信息类的集合,然后在接收方法中将参数类型定义为该包装类的集合。...绑定集合 创建包装类POJO, 封装用户集合信息; 在处理器类中编写批量修改用户的方法; 编写用户批量修改页面; 启动项目,访问:http://localhost:8080/108_springmvc_databind_war_exploded...讲解了简单的数据绑定,包括默认数据类型、简单数据类型、POJO类型、包装POJO类型以及自定义参数类型绑定; 讲解了复杂数据绑定,包括数组类型、集合类型绑定。

    79020

    一个Entity Bean要剥离出来至少三个以上的POJO

    如果是更加复杂的领域模型,那么你需要更多的EJB,也许是一个领域模型需要多个Entity Bean和多个Session Bean。...现在我们使用基于POJO模型的实现,那么粗颗粒度的EJB还要继续细分:一个Entity Bean要剥离出来至少三个以上的POJO,即一个或者多个实体类,一个或者多个DAO接口类,一个或者多个DAO接口实现类...而Hibernate实体类只是具体编码过程中,为了实现一个领域模型而编写的一组基于POJO的对象中的,完成领域模型某个特征的类。...这种领域模型在一个单纯的技术实现层面来说,对于最简单的业务,你可能只是Account类的增删改查,但是对于复杂的业务来说,他就不单但是一个类,一个表的简单操作了,例如开立账户,你要收手续费,以及考察个人财务状况...Martin提到领域模型,意在强调我们应该关注软件的业务,关注行业知识的内在规律,并且把这种规律建模为领域模型,批评拿到一个软件,脑子里面光想到数据库增删改查的人。

    43120

    如何优雅的编写代码(持续更新......)

    《编写可读代码的艺术》 《代码整洁之道》 1、如何写出优雅的代码 命名规范 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。...禁止在POJO类中,同时存在对应属性xxx的isXxx()和getXxx()方法。...initialCapacity=(需要存储的元素个数/负载因子) + 1。注意负载因子(即loader factor)默认为0.75,如果暂时无法确定初始值大小,请设置为16(即默认值)....SimpleDateFormat是线程不安全的类,一般不要定义为static变量,如果定义为static,必须加锁,或者使用DateUtils工具类。 高并发时,同步调用应该去考量锁的性能损耗。...除常用方法(如getXxx/isXxx)等外,不要在条件判断中执行其它复杂的语句,将复杂逻辑判断的结果赋值给一个有意义的布尔变量名,以提高可读性。 尽量避免采用取反逻辑运算符。

    82041

    JAVA开发规范常用的技巧总结(共12个)

    6、当pojo类在进行编写的时候要重写相应的toString方法,如果该pojo中继承了另外的一个pojo类,那么请在相应的tostring函数中加入super.toString()方法。...7、在pojo的getter和setter方法里面,不要增加业务逻辑的代码编写,这样会增加问题排查的难度。...下列情况使用 final 关键字: 不允许被继承的类,如:String 类。 不允许修改引用的域对象,如:POJO 类的域变量。 不允许被重写的方法,如:POJO 类的 setter 方法。...那么为了减少扩容操作,可以在初始化的时候将hashmap的大小设置为:已知需要存储的大小/负载因子(0.75)+1    HashMap hashMap=new HashMap(13334); 12...、Map类集合中,K/V对于null类型存储的情况: 集合名称 key value 说明 HashMap 允许为null 允许为null 线程不安全 TreeMap 不允许为null 允许为null 线程不安全

    59300

    Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程十九

    如果您希望即使不存在事务也能调用侦听器,您可以设置fallbackExecution为true。...使用@ EnableGemfireCacheTransactions注释,将enableAutoTransactionEventPublishing属性设置为true。默认值为false。...这允许您作为应用程序开发人员编写与接收事件(并对其做出反应)相关的(可能很复杂)业务逻辑,并将样板 Apache Geode 基础设施问题委托给框架。 侦听器容器是完全可定制的。...根据负载、侦听器的数量或运行时环境,开发人员应该更改或调整执行器以更好地满足她的需求。特别是在托管环境(例如应用服务器)中,强烈建议选择一个合适的TaskExecutor 来利用其运行时。...简而言之,类允许您将几乎所有实现类公开为具有最少约束的 EDP。

    94710

    MyBatis:多对一和一对多

    目录 多对一 配置数据库 搭建环境测试 按查询嵌套处理 按结果嵌套处理 总结 一对多 实体类编写 按结果嵌套处理 按查询嵌套处理 总结 多对一 多对一关系:多个学生对应一个老师 配置数据库 数据库的设计...Data public class Teacher { private int id; private String name; //get,set,toString,有参无参构造 } 编写实体类对应的...StudentTeacher结果集的类型为 Student 3. 学生中老师的属性为teacher,对应数据库中为tid。...--关联对象property 关联对象在Student实体类中的属性--> pojo.Teacher...按照查询进行嵌套处理就像SQL中的子查询 按照结果进行嵌套处理就像SQL中的联表查询 一对多 一对多: 一个老师拥有多个学生 如果对于老师这边,就是一个一对多的现象,即从一个老师下面拥有很多学生(集合) 实体类编写

    97640

    微服务架构之Spring Cloud入门

    微服务架构说明 SOA使用了ESB组件的面向服务架构:ESB自身实现复杂;应用服务粒度较大,所有服务之间的通信都经过ESB会降低通信速度;部署、测试ESB比较麻烦。...user-consume工程结构 目标:编写测试类使用restTemplate访问user-service的路径根据id查询用户 分析需求:访问http://localhost:8080/consumer.../8 使用RestTemplate获取http://localhost:9091/user/8的数据 实现步骤: 添加启动器依赖; 创建启动引导类(注册RestTemplate)和配置文件; 编写测试代码...eureka-server目录 目标:添加eureka对应依赖和编写引导类搭建eureka服务并可访问eureka服务界面 分析: Eureka是服务注册中心,只做服务注册;自身并不提供服务也不消费服务...搭建步骤: 创建工程; 添加启动器依赖; 编写启动引导类(添加Eureka的服务注解)和配置文件; 修改配置文件(端口,应用名称...); 启动测试 小结: 启动器依赖 <dependency

    70020

    微服务学习计划——SpringCloud

    我们给出分布式架构的直观图: 同样我们也可以很直观的获得分布式架构的优缺点: 优点: 降低服务耦合 有利于服务升级和拓展 缺点: 服务调用关系错综复杂 微服务架构 我们从单体架构升级到分布式架构自然会存在一些我们目前无法解决的问题...org.springframework.cloud spring-cloud-starter-netflix-eureka-server 编写启动类...我们在上面的解释中提及到了一个词汇: IRule:负载均衡的规则都定义在IRule接口中,而IRule有很多不同的实现类 我们给出一张IRule的继承图: 我们对其部分规则进行解释: 内置负载均衡规则类...--导入我们编写的feign-api类--> cn.itcast.demo feign-api spring-cloud-starter-alibaba-nacos-discovery 编写启动类

    64530

    POJO简介

    为POJO增加了持久化的方法(Insert、Update、Delete……)之后,POJO就变成了PO。...为POJO增加了数据绑定功能之后,POJO就变成了View Object,即UI Model。 为POJO增加业务逻辑的方法(比如单据审核、转帐……)之后,POJO就变成了Domain Model。...易编写、易维护、易使用   3. 可以在任何安装了Java运行环境的平台上的使用,而不需要重新编译。...比如我们编写一个计算圆面积的java类CircleArea.java 以后需要计算圆面积的地方直接调用就行了。...:普通Java类,具有一部分getter/setter方法的那种类就可以称作POJO,但是JavaBean则比 POJO复杂很多,JavaBean是一种组件技术,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用

    1.6K30

    day61_Mybatis学习笔记_01

    编程步骤: 1、根据需求创建po类 2、编写全局配置文件 3、根据需求编写映射文件 4、加载映射文件 5、编写dao接口 6、编写dao实现类 7、编写测试代码 程序编写 步骤中的1、2、3、4都在入门程序中进行了编写...所以针对要扩展的po类,我们需要创建一个扩展类,来继承它。 定义用户扩展类: ? 定义POJO包装类: ? 编写mapper映射文件     编写Mapper接口     // 综合查询:通过传递包装类来进行复杂的用户信息综合查询     public List findUserList(UserQueryVO userQueryVO...如果查询的列名和映射的pojo属性名全部不一致,则不会创建pojo对象,即映射的对象为空。   ...Mapper接口     // 综合查询:通过传递包装类来进行复杂的用户信息综合查询     public List findUserList(UserQueryVO userQueryVO

    1.4K30

    Java EE实用教程笔记----(8)第八章 Hibernate映射机制

    然后在真正的映射POJO中使用: ? POJO类编写完成后,可以编写配置文件Cj.hbm.xml,代码如下: ? 配置完成后,下面来看复合主键如何操作数据库数据。 保存一个对象: ?...建立两张表对应的POJO类。 Yjs.java代码为: ? Bks.java代码为: ? 建立POJO类对应的映射文件。 Yjs.hbm.xml配置文件为: ? ?...POJO类的分配为,Xs.java中配置除子类各自独特属性外的所有属性,子类只配置各自的独特属性。在项目src下建org.vo.one包,用于存放新编写的POJO类。...修改Person表对应的POJO类Person.java,代码为: ? 修改Room表对应的POJO类Room.java,代码为: ?...修改Person表与Person类的ORM映射文件Person.hbm.xml为: ? 修改Room表与Room类的ORM映射文件Room.hbm.xml为: ? (2)编写测试代码。

    1.1K20
    领券