某厂软件培训之Java班

本周公司来学校开JAVA班的软件培训课程,主要讲解了软件开发测试流程、敏捷开发、JAVA编程规范、实战演练模拟地铁售票系统(主要实现了深度优先搜索找到最短路径)等;以下为课堂记录摘要;
------------------------------------------------------
Day1

软件:

自底向上发展模型


软件开发流程预览:
[                                设计周期                            ]     [  编码实现    ]
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>     >>>>>>>>>>>

云化:
微服务,分而治之,面向接口

敏捷:
STORY 用户故事 贴近需求

------------------------------------------------------

云计算 分布式 集群服务:

可扩展性 高可用性 


Java编程规范:
String(不可变类型,每次操作都生成一个新对象)  StringBuilder(操作可在同一个对象中无需新创建对象提供效率)  StringBuffer()线程相关


【代码规范  代码安全  提前规避  节省时间就是延长生命】

-------------------------------------------------------
Day2

工匠精神:做就认真做,不然就是对自己生命的一种浪费。

避免编码低级错误  

对象集合(hashSet)的排序是根据对象的哈希码的做哈希的key,在删除集合中的一项时不允许修改该对象的哈希码,不然会找不到

equals  hashCode   重写hashCode的时候也要重写equals,不然hashCode改变了的时候集合的哈希排序失效会导致查找效率低下

hashCode默认返回对象的指针地址

String == 比较 对象的指针是否相等, 基础类型的时候才会用==,其他类型都需要equals去判断,必要时需覆盖equals方法

将不必要在循环体内的操作移到循环体外

代码性能能优化的时候要及时优化    编码能力体现在一行行代码中

涉及到IO代码的时候先定好 是否需要在本方法中释放该资源,如果需要则先要写出try catch finally块其中finally忠要释放资源

try {
//TODO 
} catch () {
//TODO
} finally {
if (fileWriter != null) {
try {
fileWriter.close();
} catch (IOException e) { 
//log 

}
}

类型范围大小  JAVA静态语言 强类型 

高质量代码: 简洁、可靠、高效(最小占用资源)、可维护、可测试、可移植


【代码阅读次数远比写的次数要多的多】

代码量度指标:
圈复杂度:独立路径条数 【1,10】
嵌套层数:【1,4】
有效注释比例:【5%, 20%】
有效代码行数:【1,50】
函数参数个数:【0,5】
函数变量个数:【0,5】
非结构化语句数量:【0,0】


很多状态需要做switch对应处理的时候,可把状态码做一个哈希作为Key,建立一个对应的类来作为value,先初始化对应处理类的一个列表,

然后在switch的时候根据状态吗的哈希值直接去拿到对应对象的实例,这样可不用switch语句(缩短方法代码行数)


把多个条件的组合判断的提前为:不正常的就先退出


if (a && b && c) //

改为
if (!a) return;
if (!b) return;
if (!c) return;
//

注意代码中的魔鬼数字:修改为类的静态常量

【代码读的次数远远多于代码写的次数】


-------------------------------------------------------

代码系统无关,如路径名的分隔符/\
JDK > JRE > JVM

JVM中不同类对象有在堆中的各自的成员变量,但并不包含方法,因为所有的类对象都共享类方法(类方法应该是放在在栈上的)

ArrayList是线程不安全的,如果有多个线程同时操作可能会有异常比如一个在删除一个在添加

------------------------------------------------------
Day3

拥抱变化,保证自我价值

功能性需求 + 质量需求 + 约束


需求分析(抽象能力):
1.识别系统角色:客户、用户、其他的内部/外部用户
2.识别周边系统边界:如周边使用到的其他系统
3.需求收集:始终根据用户、客户使用系统的目的去收集需求,从每一个角色出发,反复询问 系统需要为用户提供什么服务?
4.需求建模:识别用例与参与者(用户与对应动作)-编写用例


用例模板:

用例编号:UC001
用例名称:
用例概述:
参与者:
前置条件:
后置条件:
基本事件流: 步骤1-N - 活动1-N
扩展事件流:
规则与约束:


软件设计与可视化表达:


association 关联(使用到,比如作为函数的参数)
generalization 范化(继承)
dependency  依赖
aggregation 集成,系统与部分的关系,属于依赖关系的一种
composition 组合,比集成更强的依赖关系,系统与组件不可分,生命周期一致


依赖注入:自动加载依赖的对象,如sprint中xml配置了则会在创建类的时候自动创建依赖的类?


---------------------------------------------------------
测试:
等价类:有效等价类、无效等价类
边界值
判定表方法:

--------------------------------------------------------

Day4

单元测试:

语句覆盖

判断覆盖
条件覆盖


工作建议:

代码:多看,多写,多讨论
选对行业、公司、领导
业余时间
借力,学会拒绝
做事以终为始,明确目的是什么
明确自己的优点与缺点






--------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglitong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值