个人作业收官——软件工程实践总结
目录:
一、理想与现实
1.故事伊始
2.所谓提升
二、“人月神话”
1.吐槽篇
2.项目经验
三、前人栽树
四、团队感悟
五、读书笔记
1.第一行代码
2.代码质量
六、亮相
不敢妄言,自己最大的收获就是发现了一群更牛的大佬们 他们装X与无形之间,就在谈笑间写下了不朽的行行代码,叫人折服![](http://images2015.cnblogs.com/blog/1021338/201701/1021338-20170108064624394-382759960.png)
新工具新软件
以上就是这学期接触到的软件,值得一提的有:
cmd与Evernote,支持MD语法的富文本编辑,简化了生产随笔的时间;
还有就是StartUML与VISIO,帮助整理思路,绘制流程图,类图等等
最后就是墨刀了,帮助绘画原型。
新语言与新平台
语言没有更新,平台是加入了Android studio 大家庭。
从第一行代码到代码统计
比较欣喜的是自己的代码得到了复用,整体的框架结构也有所提升
从XML,到activity到Javabean再到adapter最后是application都有涉及,感觉大致都有所了解了,成功的写出了demo。
写的不是很多吧,我一开始就安排到前端了,之后虽然积极向model和controller靠近,但是能做的还是比较少的,等于是给自己的Java提交一份考卷般的心情。
以前,我基本上没做过前端的工作,这次的锻炼让我了解到前端也是一门艺术。我想这个寒假有时间的话,自己再把安卓里的所有构件都玩一边,加深一下影响。
新的学习方法与思考角度
在思考上,更加多元化了;
在学习风格上也不孤僻了;
在学习品格上比较沉稳了;
以前的我喜欢一个人写代码,一个人的思考,这次的软工,基本上都是团队的合作,协作的过程中,融入是一个过程,希望自己之后能打开一点。
于此同时,我还是希望下学期有个人软件设计的作业,毕竟一个人独立完成的一门作业,成长我想回更快
我们只是一个打着软件开发的帽子,冲冲撞撞的代码猿
简单写一下:
1.充分利用后台给的API使用文档,这样可以在完全不理解后台的实现过程的情况下,更好地进行项目开发
2.注意函数分类打包,为一类功能单独编写一个实现类,直接调用,降低代码的耦合性。
3.注意接口的灵活使用,自定义接口,然后通过setListener()或者直接在构造函数中传过来,就可以实现接口的回调。
没什么经验分享,就只有一句话,如果暑假的时候你已经选择了这门课,那就充分的应用暑假的时间磨炼自己,大三实在是大家都很忙,感觉身体被掏空~~~
在一开始做项目的时候一定要使用git,在观看网上的demo的时候一定要自己了解意思,在动手敲,不要复制粘贴
这里是需要表达自己观点的地方,不要羞于表达,在一开始做项目的时候一定要使用git,在观看网上的demo的时候一定要自己了解意思,在动手敲,不要复制粘贴,在需求分析的时候,一定要好好你们的框架怎么做,一些规范一定要开始就订好。
大家都是相辅相成的伙伴,有问题一定要及时沟通。
我就是读《第一行代码》
全局获取Context的技巧
我们大多数的操作都是在活动中进行的,而活动本身就是一个Context对象,但是,当程序结构越来越复杂的时候,一些逻辑代码可能会脱离Activity类,可此时又需要用到Context,比如一些自定义的工具类里根据状态信息弹出Toast,解决的办法是可以在该工具类的方法中传入Context参数,但此时获取Context的任务就转移给了调用方,如果获取失败,则此次工具类的方法也就不会执行,一个更好的解决办法就是自定义Application类,管理程序内一些全局的状态信息,比如全局Context
(不只是Context)Android提供了一个Application类,每当应用程序启动的时候,系统就会自动将这个类初始化,获取Context的任务,即可放在我们自定义的Application类中,首先需要创建一个MyApplication类继承自Application类,代码如下:
[code]public class MyApplication extends Application {
private static Context mContext;
//重写父类onCreate()方法
@Override
public void onCreate() {
mContext = getApplicationContext();
super.onCreate();
}
//返回取到的context
public static Context getContext(){
return mContext;
}
}
安卓UI布局
•LinearLayout 线性布局,关键属性: ◦android:orientation=”vertical/horizontal”
用于指定排列方向 ◦android:layout_gravity=”?”
用于指定空间对齐方式,而android:layout指定的是文字在控件的对齐方式 ◦android:layout_weight=”?”
用于使用比例指定空间的大小•RelativeLayout 相对布局,通过相对定位的方式让空间出现在布局的任何位置。 关键属性:
◦第一类:属性值为true或false android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中 android:layout_centerInparent
相对于父元素完全居中 android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
◦第二类:属性值必须为id的引用名“@id/id-name” android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方 android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边 android:layout_alignTop
本元素的上边缘和某元素的的上边缘对齐 android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
◦第三类:属性值为具体的像素值,如30dip,40px android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离 android:layout_marginRight
离某元素右边缘的距离 android:layout_marginTop 离某元素上边缘的距离•FrameLayout 所有的控件都摆放到布局的左上角,比较另类。 •TableLayout 使用表格的方式来排列控件
难掌握的UI控件
ListView
优化方法:
a)、每一个子项被滚动到屏幕内都会调用getView()方法,为了优化快速滚动的性能,不必每次都要加载一次布局,因为getView()方法中有一个convertView参数,用于将之前加载好的布局进行缓存以便重用。
b)、不必每次都要用findViewById()获取子项布局控件的实例,将子项布局中的控件各个字段封装成一个类,利用view.setTag()和view.getTag()来存储和获取子项布局中的控件。
Stephen Vance所撰写的《高质量代码——软件测试原则、实践与模式》
1.软件产品质量
软件产品质量通常可以从以下六个方面去衡量(定义) :
l 功能性(Functionality),即软件是否满足了客户业务要求;
l 可用性(Usability),即衡量用户使用软件需要付出多大的努力;
l 可靠性(Reliability),即软件是否能够一直处在一个稳定的状态上满足可用性;
l 高效性(Efficiency),即衡量软件正常运行需要耗费多少物理资源;
l 可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力;
l 可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中;
由此可见,软件产品的质量有其明显的特殊性。而目前提高软件产品质量的主要方法是软件过程质量控制。
提高代码质量的方法
提高代码质量的方法主要有:培训和审查监督。培训主要是针对业务领域、编程工具和技术、服务意识等基础方面的增强;而审查监督是针对编码规范、代码走查、代码评审、单元测试、集成测试、持续集成、执行流程等编程方面的增强。