个人作业收官——软件工程实践总结

目录:


一、理想与现实

1.故事伊始

2.所谓提升

二、“人月神话”

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.吐槽篇

我们只是一个打着软件开发的帽子,冲冲撞撞的代码猿

2.项目经验

简单写一下:

1.充分利用后台给的API使用文档,这样可以在完全不理解后台的实现过程的情况下,更好地进行项目开发    
2.注意函数分类打包,为一类功能单独编写一个实现类,直接调用,降低代码的耦合性。 
3.注意接口的灵活使用,自定义接口,然后通过setListener()或者直接在构造函数中传过来,就可以实现接口的回调。

三、前人栽树

 没什么经验分享,就只有一句话,如果暑假的时候你已经选择了这门课,那就充分的应用暑假的时间磨炼自己,大三实在是大家都很忙,感觉身体被掏空~~~
 在一开始做项目的时候一定要使用git,在观看网上的demo的时候一定要自己了解意思,在动手敲,不要复制粘贴

四、团队感悟

   这里是需要表达自己观点的地方,不要羞于表达,在一开始做项目的时候一定要使用git,在观看网上的demo的时候一定要自己了解意思,在动手敲,不要复制粘贴,在需求分析的时候,一定要好好你们的框架怎么做,一些规范一定要开始就订好。
   大家都是相辅相成的伙伴,有问题一定要及时沟通。

五、读书笔记

1.第一行代码

 我就是读《第一行代码》

全局获取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()来存储和获取子项布局中的控件。

2. 代码质量

  Stephen Vance所撰写的《高质量代码——软件测试原则、实践与模式》

1.软件产品质量

软件产品质量通常可以从以下六个方面去衡量(定义) :

l 功能性(Functionality),即软件是否满足了客户业务要求;

l 可用性(Usability),即衡量用户使用软件需要付出多大的努力;

l 可靠性(Reliability),即软件是否能够一直处在一个稳定的状态上满足可用性;

l 高效性(Efficiency),即衡量软件正常运行需要耗费多少物理资源;

l 可维护性(Maintainability),即衡量对已经完成的软件进行调整需要多大的努力;

l 可移植性(Portability),即衡量软件是否能够方便地部署到不同的运行环境中;

由此可见,软件产品的质量有其明显的特殊性。而目前提高软件产品质量的主要方法是软件过程质量控制。

提高代码质量的方法

   提高代码质量的方法主要有:培训和审查监督。培训主要是针对业务领域、编程工具和技术、服务意识等基础方面的增强;而审查监督是针对编码规范、代码走查、代码评审、单元测试、集成测试、持续集成、执行流程等编程方面的增强。

1.亮相

posted @ 2016-12-30 21:24  BenedictN  阅读(207)  评论(1编辑  收藏  举报
Demo
abc
returnTop