构建之法3
在问题领域中的现实世界里,都有哪些实体,如何抽象出我们真正关心的属性,实体之间的关系是什么,在这个基础上,用户的需求是什么,软件如何解决用户的需求
在“设计与实现阶段”,我们要搞清楚软件是怎么解决这些需求的?
在“测试”和“发布”阶段,我们要搞清楚软件真的解决了这些需求了么?
软件团队的所有相关人员都需要处理、了解这些信息,如果在处理的过程中有误解和遗失,就会导致开发过程中的问题,以至最终产品不能满足用户的需求。那么这些信息怎么表达才能更准确、更能有效地交流呢?
一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应该有一个流程,通过学习我懂得了个人开发流程需要具备的条件,软件系统的绝大部分模块都是由个人开发或维护的。所以个人个人能力的衡量与发展还是一个团队的核心。
在主界面中加入广告
<!-- 广告组件 -->
<activity android:name="net.youmi.android.AdBrowser"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Light.NoTitleBar" >
</activity>
<service android:name="net.youmi.android.AdService" android:exported="false" > </service> <receiver android:name="net.youmi.android.AdReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <data android:scheme="package" /> </intent-filter> </receiver> 在MainView中加入广告加载代码 =============== //广告 private void loadYMAds() { // 实例化 LayoutParams(重要) FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.FILL_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT); // 设置广告条的悬浮位置 layoutParams.gravity = Gravity.BOTTOM | Gravity.RIGHT; // 这里示例为右下角 // 实例化广告条 AdView adView = new AdView(this, AdSize.FIT_SCREEN); adView.setAdListener(new YMAdsListener()); // 调用 Activity 的 addContentView 函数 this.addContentView(adView, layoutParams); }
这段代码是在项目中到了比较关键的创造阶段,我们俩椅子靠椅子的坐在电脑前,一边讨论一般编码,还好有大神在旁边指导,总是不断在我敲某某变量之前提前告诉我成员变量的名字,数据修改时帮忙检查是否有漏掉的,变量和函数定义的时候一起为其取名字,感觉有点眼花了,就换了个角色,我也开始对他“指指点点”了,一个人编码,一个人复审,确实能减少一些不必要的错误,减少一些漏洞,算法实现后一起做些简单的测试,看到bug了再一起分析,我能明显的感觉到与以前的个人编程不一样,我们能比较快的找到错误初始点,并能提出比较的修改方法。特别是当看到功能进一步实现时,心里确实挺高兴,更重要的这份感受有同伴与你一起分享。当程序的主要功能实现后,一些程序员会会很乐观地估计只需要另外20%的时间,给代码加一些错误处理就大功告成了,但是对我们来说20%的工作往往需要全部项目80%的时间。
我们经常抱怨阅读别人的代码很难, 可我在想我们自己在写代码的时候,是否考虑到如何让代码更易于阅读和维护呢?我们的代码按我们已有的水平编写还是缺少资源,如何才能把我们自己的需求都编进去,让它形成一个有效的APP呢?