第03周 预习作业(小组成员:陈卓,毛敏磊)

第02周 课前问题列表:

————————————————————————————————————————————————————————
1. 什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?

2. 购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?

3. 一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。

4. 阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。

———————————————————————————————————————————————————————

一. 什么样的方法应该用static修饰?不用static修饰的方法往往具有什么特性?Student的getName应该用static修饰吗?

1.那些直接与类相关联而不是与类的实例相关联的操作。
2.与对象实例相关可以访问对象的状态
3.通常情况下,每个学生对象都有自己的姓名,name 是一个实例变量,因此 getName 方法应该是一个实例方法,用来返回当前对象的姓名。如果 getName 被声明为 static,那么它就成为了类级别的方法,意味着所有 Student 对象共享同一个 name,这显然不符合实际情况。

二. 购物车案例中,使用了什么方法将问题描述中的类、方法、属性找出来?方法与属性到底属于哪个类,要怎么判定呢?

一、识别类

仔细剖析问题描述,把其中代表实体的名词提取出来,这些很可能是潜在的类。以购物车案例为例,“购物车”“商品”“用户” 等名词通常可确定为类。这些实体在购物场景中具有独立的存在意义和特定的功能职责。

二、识别方法

从问题描述中的动词入手,与各类相关的动词往往能对应到相应类的方法。对于购物车类,像 “添加商品”“移除商品”“计算总金额” 等动词短语可确定为购物车类的方法。购物车的主要功能是管理商品的集合,这些方法都是对购物车这个实体进行的具体操作,与购物车的职责紧密相关。对于商品类,“获取商品价格信息”“获取商品描述内容” 等是商品类的方法,这些方法主要围绕商品的属性进行操作,以提供关于商品的特定信息。

三、识别属性

从描述信息中判断属性。那些用于描述类特征的信息通常就是属性。在商品类中,“价格”“名称”“颜色” 等信息专门描述商品这个实体的特征,所以它们是商品类的属性。在购物车类中,“商品列表”“总金额” 等反映购物车的状态和特征,属于购物车类的属性。

方法的判定

基于功能关联性原则,一个方法应与它所在类的主要功能和职责相关。例如购物车类主要负责管理商品集合相关操作,“添加商品到购物车” 这个方法完全符合购物车的功能职责,因此属于购物车类。
考虑操作对象的归属。如果一个方法操作的是某个类的实例变量(属性),那么它很可能属于该类。比如商品类有一个 “价格” 属性,“修改商品价格” 这个方法直接作用于商品类的属性,所以应该属于商品类。

属性的判定

遵循描述主体一致性原则,属性是用来描述类的特征的。如果一个信息专门用于描述某个类的某个方面特征,那么它就是这个类的属性。例如商品类中的商品重量、尺寸等信息,明确是描述商品实体的,所以是商品类的属性。
考虑在类的上下文中的唯一性。某个属性在特定类的上下文中才有意义,而在其他类中没有直接关联,那么它属于该特定类。例如购物车类的 “已选商品数量” 属性,仅在购物车的概念范围内有意义,与商品类或者用户类没有直接关联,所以属于购物车类。

三.一个项目中有很多类。怎样才能避免你项目中的类与别人编写的类同名呢?项目中类各种各样要怎么管理这些代码呢?举例说明。

避免类同名:1.为类名添加特定的前缀或后缀,以表示它们属于特定的项目或库。
            2.使用包来组织类。包不仅可以避免命名冲突,还可以帮助管理代码结构。
            3.使用命名空间可以有效地避免类名冲突。
管理代码:1.对于大型项目,可以使用代码库管理系统(如Git)来管理代码,并通过分支和模块来组织不同的类和功能。
          2.可以使用模块化系统(如CommonJS、AMD或ES6 Modules)来组织代码。

四.阅读《阿里巴巴Java开发手册 终极版(1.3.0)》,写出至少7条Java编程规范。应包含如下几个方面:变量命名、类命名、方法命名、常量命名、包命名、代码格式、OOP规约。

1. 变量命名:变量命名应使用驼峰命名法,首字母小写。如果是布尔变量,则名称应以is或has开头,同时变量名不应使用拼音与英文混合的方式,应当使用完整的英文描述。
2. 类命名:类名必须使用大驼峰命名法,首字母大写。类名通常是名词或名词短语,同时类名不应当是动词,也不应当是形容词。
3. 方法命名:方法名必须使用小驼峰命名法,首字母小写。方法名通常以动词或动词短语开头,同时避免方法名过长,尽量不超过30个字符。
4. 常量命名:常量名应全部大写,单词之间用下划线分隔,同时常量的定义尽量放在接口中,不建议用类来定义。
5. 包命名:包名应统一使用小写字母,点分隔符之间有且仅有一个自然语义的英语单词,同时包名不应当包含类名,并且包的路径应该与项目的模块结构一致。
6. 代码格式:代码缩进应使用4个空格,不允许使用Tab字符,同时方法的大括号在方法名下一行,并在大括号内部换行。
7. OOP规约:应避免通过一个类的对象引用访问此类的静态变量或静态方法,直接用类名来访问即可,同时所有的覆写方法,必须加@Override注解。
8. 集合处理:对于基本数据类型与包装数据类型的使用标准,所有的POJO类属性必须使用包装数据类型。
9. 并发处理:创建线程或线程池时应指定有意义的线程名称,方便出错时回溯。
10.异常处理:异常不要用来做流程控制,条件控制,因为异常的处理效率比条件分支低。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值