tag 标签: 老师

相关博文
  • 热度 12
    2013-6-8 14:47
    379 次阅读|
    0 个评论
    Android 架构及实践技术(为手机厂定制) 培训 本课程从代码实战的角度打通Android整个系统,从Linux内核层一直最上面的应用层,祝你轻松彻底驾驭Android。 中国电子标准协会 http://www.ways.org.cn 培训内容     第一天 第1个主题:Android架构揭秘(30分钟) 1,1 Google是如何通过Android支持、掌控全球的硬件厂商和应用程序开发者的? 1,2 Android控制力的源泉是什么?技术上如何实现? 1,3 Android的Linux Kernal、HAL、Libararies、Runtime、Application Framework设计的理念和实现技术; 1.4 Android平台与硬件、云的微妙关系;   第2个主题:Android开机流程揭秘(90分钟) 2,1 第一个用户进程剖析; 2,2 ServiceManager与Binder的关系; 2,3 Zygote揭秘及其运作方式; 2,4 Android中的第一个Java进程揭秘,第一个Java进程和ServiceManager的关系及代码实现;   第3个主题:Android中启动一个新的应用程序揭秘(60分钟) 3,1 当我们触摸Android屏幕中Launcher上的一个应用程序的图标的时候到底发生怎样的调用过程? 3,2 应用程序的执行入口到底在哪里? 3.3 一个新的Android应用程序的进程到底是怎么产生的?   第4个主题:HAL揭秘(60分钟) 4.1 HAL被加入Android中的真正历史原因分析 4.2 HAL的意外价值揭秘 4.3 HAL的Stub 4.4 hw_module_t与hw_device_t 4.5 C语言如何实现继承来满足HAL Stub的设计目的?包括内存结构分析和代码风格讨论等 4.6 如何避免HAL Stub实现时的Dirty Code?   第5个主题:HAL Stub实战(60分钟) 5.1 用面向对象的思想分析、设计、实现Stub 5.2 hw_module_t的子类和hw_device_t的子类的关系以及这种关系的优势 5.3在结构体中如何实现C函数的调用?hw_module_t的子类在代码中又是如何和hw_device_t的子类交互的? 5.4 类型转换问题   第6个主题:HAL和Linux Kernel(30分钟) 6.1 HAL Stub访问和控制硬件 6.2 Android下的Linux Kernel剖析 6.3 Android 硬件的Driver 6.4 访问Linux内核空间的Driver   第7个主题:Service与HAL Stub整合(90分钟) 7.1 以面向服务的观点和方式与HAL交互 7.2 Library的中so库文件的类型及C/S结构剖析 7.3 hw_get_module 7.4 获取HAL Stub对象的代码流程剖析 7.5 为何HAL Stub的open方法必须提供supporting API(对设备的操作接口)给runtime; 第8个主题:Android中的JNI编程(50分钟) 8.1 Java调用C/C++ 8.2 JNIEnv、JVM、JObject揭秘 8.3 C/C++创建Java对象、调用Java属性和方法 8.4 JNI中的多线程编程 8.5 Facade Pattern在JNI中绝妙应用剖析 8.6 PnP(Plug and Play)       时间 內  容 备注 第二天 第9个主题:Android中的NDK编程(30分钟) 9.1 NDK与JNI关系揭秘 9.2 NDK开发的流程 9.3 采用NDK方式开发出的程序安装和运行的内幕 9.4 NDK中的Java与C/C++相互调用 9.5 NDK中的多线程编程 9.6 关于Android软件开发的标准化和可替换性揭秘   第10个主题:SystemServer与Framework中的Service(60分钟) 10.1 Zygote与SystemServer 10.2 SystemServer开启Java世界的过程揭秘 10.3 Android Service和Native Service是如何关联起来的? 10.4 Android Service与ServiceManager 10.5 如何把自己的服务加入到ServiceManager中?   第11个主题:把Java写的 Service加入到Applciation Framework中(60分钟) 11.1 IInterface与CTS 11.2 Binder 11.3 AIDL 11.4 Java Service与Manager 11.5 SystemServer、ServiceManager 第12个主题:Android框架移植移植时的事件驱动机制(60分钟) 12.1 Android Service是如何应对硬件阻塞的? 12.2 开辟新的子线程并不断的poll 12.3 Listener注册 12.4 Callback 12.5 Application Framework中的Handler、Message、Looper、MessageQueue、 12.6 事件驱动机制实例   第13个主题:Manager、Service和完整的数据流(60分钟) 13.1,Manager和Service分离的原则 13.2,ANR问题 13.3,阻塞式的操作和非阻塞式操作 13.4,以实例说明Android中的从最底层到最上层的数据流   第14个主题:Android Application Framwork和App的关系(30分钟) 14.1 Framework和App的具体关系是什么? 14.2 Framework和App的交互过程? 14.3 Framework如何掌控App的? 14.4 Framework与Android的四大组件;   第15个主题: Handler、Looper、Message、MessageQueue(30分钟) 15.1. Android的事件驱动模型 15.2. Looper、MessageQueue、Hanlder、Message等源码深度剖析 15.3. Looper、MessageQueue、Hanlder、Message及多线程实战案例     1,调试 2,Binder申请; 2,内核 虚拟机 3,匿名共享内存; 4,内存泄露 5,Media主题     时间 内容 备注 第三天 第1个主题:Dalvik虚拟机架构设计和实现彻底剖析(90分钟) 1.1 Dalvik虚拟机启动过程剖析 1.2 Dalvik虚拟机运行过程剖析 1.3 Dalvik的C/C++与Java交互的JNI方法注册过程剖析 1.4 Dalvik关于进程和线程创建与管理剖析   第2个主题:架构:Service、ServiceManager和Binder交互关系揭秘(30分钟) 2.1 Binder的第一号服务是谁?为何要这样设计和实现? 2.2 如何编写Service 2.3 新的Service产生与ServiceManager和Binder交互流程 2.4 如何获取一个Service? 2.5 Binder的生产者与消费者模式剖析   第3个主题:架构:Binder与Ashmem(90分钟) 3.1 Binder剖析 3.2 Ashmem驱动程序源代码分析 3.3 Ashmem在进程间共享的原理分析 3.4 系统匿名共享内存C++调用接口分析 3.5 Binder是如何使用共享内存来完成进程间通信的? 3.6 从代码的角度来分析Binder使用Shared Memory的生产者与消费者模式   第4个主题:源码:通过Binder、ServiceManager、BpBinder、BnBinder、AIDL贯通Android整个体系的架构核心(120分钟) 4.1. 源码剖析Service Manager是如何成为一个守护进程的? 4.2. 源码剖析Server和Client是如何获得Service Manager接口的? 4.3. 源码剖析Server是如何把自己的服务启动起来的?Service Manager在Server启动的过程中是如何为Server提供服务的? 4.4  源码剖析Service Manager是如何为Client提供服务的? 4.5. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析                    
  • 热度 11
    2013-6-8 14:44
    395 次阅读|
    0 个评论
    Android 架构及实践技术培训     中国电子标准协会 http://www.ways.org.cn 培训内容     第一天 第1个主题:架构:Service、ServiceManager和Binder交互关系揭秘(30分钟) 1 Binder的第一号服务是谁?为何要这样设计和实现? 2 如何编写Service 3 新的Service产生与ServiceManager和Binder交互流程 4 如何获取一个Service? 5 Binder的生产者与消费者模式剖析   第2个主题:匿名共享内存(60分钟) 1 匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析 2 Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享   第3个主题:源码:通过Binder、ServiceManager、BpBinder、BnBinder、AIDL贯通Android整个体系的架构核心(60分钟) 1. 源码剖析Service Manager是如何成为一个守护进程的? 2. 源码剖析Server和Client是如何获得Service Manager接口的? 3. 源码剖析Server是如何把自己的服务启动起来的?Service Manager在Server启动的过程中是如何为Server提供服务的? 4  源码剖析Service Manager是如何为Client提供服务的? 5. Android系统进程间通信Binder机制在应用程序框架层的Java接口源代码分析   第4个主题:同一个程序内部启动一个新的Activity(60分钟) 1.应用程序的MainActivity通过Binder进程间通信机制通知ActivityManagerService启动一个新的Activity; 2.ActivityManagerService通过Binder进程间通信机制通知MainActivity进入Paused状态; 3.ActivityManagerService通过Binder进程间通信机制通知MainActivity所在的ActivityThread启动新的Activity;   第5个主题:通过开辟一个新的进程来启动一个新的Activity(20分钟) 1.Launcher通过Binder进程间通信机制通知ActivityManagerService,它要启动一个Activity; 2.ActivityManagerService通过Binder进程间通信机制通知Launcher进入Paused状态; 3.ActivityManagerService创建一个新的进程,用来启动一个ActivityThread实例; 4.ActivityThread通过Binder进程间通信机制将一个ApplicationThread类型的Binder对象传递给ActivityManagerService,以便以后ActivityManagerService能够通过这个Binder对象和它进行通信; 第6个主题:BroadcastReceiver注册过程(60分钟) 1. 广播接收器receiver 2. 保存广播类型filter;   第7个主题:广播发送和接收(60分钟) 1 sendBroadcast与ActivityManagerService 2 ReceiverDispatcher 3消息循环系统   第8个主题:服务的启动(20分钟) 1 ActivityManagerService进程完成新进程的创建; 2获取要在新进程启动的服务的相关信息; 3启动服务   第9个主题:服务的绑定和并发多客户请求的原理(60分钟) 1 ActivityManagerService启动服务 2 onBind 3 ServiceConnection 4并发多客户请求     时间 【主办单位】中国电子标准协会 【协办单位】深圳市威硕企业管理咨询有限公司 內  容 备注 第二天 第10个主题:ContentProvider启动过程(20分钟) 1 ContentResolver与ApplicationContentResolver 2 注册过程   第11个主题:ContentProvider在不同的应用程序之间共享数据(60分钟) 1 CursorWindow 2 ContentProviderProxy 3 Parcel 4 Transport 第12个主题:ActivityManagerService的各种作用和原理(60分钟) 1 AMS的架构解析 2 AMS是怎么成为应用程序背后的控制者的 3 生命周期的管理 4 组件之间的交互   第13个主题:Dalvik VM运行机制(60分钟)  1. 创建Dalvik虚拟机实例;  2. 为主线程的设置JNI环境; 3. 注册了Android核心类的JNI方法; 4. Java与C/C++的相互沟通;   第14个主题:Android移植时的事件驱动机制(30分钟) 1 Android Service与Na                                            tive Service是如何应对硬件阻塞的? 2 开辟新的子线程并不断的poll 3 Listener注册 4 Callback 5 Application Framework中的Handler、Message、Looper、MessageQueue、 6 事件驱动机制实例   第15个主题:Intent彻底剖析(30分钟) 1 Android intent设计原则 2 Android intent实现 3复杂度和灵活性之间平衡   第16个主题:WindowManagerService原理与核心架构解析(180分钟) 1 WindowManagerService和ActivityManagerService进行交互(30分钟) 2 WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析(30分钟) 3 WindowManagerService切换Activity窗口(App Transition)的过程分析(30分钟) 4 WindowManagerService显示窗口动画(60分钟) 5 WindowManagerService与SurfaceFlinger的交互(30分钟)      
  • 热度 11
    2013-6-8 14:39
    426 次阅读|
    0 个评论
           Android 高级UI技术最佳实践培训 课程要点: 彻底剖析 Android 应用程序的灵魂 --- Android 的事件驱动机制; Android UI 框架剖析和 UI 线程处理机制; 由参与或者主导的 20 多款商业 Android 应用程序感悟出的 Android app 设计思想、思路、经验; 自定义用户 UI ; 使用 RenderScript 、 OpenGL 等创建高级 UI ; 深入 RenderScript 、 OpenGL 高级实战 处理手势和创建动画; 经典的异步加载和分页问题; 各种图形 UI 编程实例; 性能优化实战;   中国电子标准协会 http://www.ways.org.cn 课程目标:          本课程涵盖Android事件驱动模型和高级UI的一切技术,并涵盖Android性能测试和优化技巧 培训对象:          Android开发者     时间 內  容 备注 第一天 第01个主题:彻底剖析Android应用程序的灵魂--- Android的事件驱动机制(50分钟) 1.1 UI线程或者主线程到底应该做什么? 1.2 Android应用程序的事件驱动机制彻底剖析; 1.3 再论HandlerThread; 1.4 UI的绘制和重绘背后到底由谁决定?   第02个主题:Android UI框架剖析和UI线程处理机制((50分钟)) 2.1 UI的继承结构和在内存中的关系 2.2 UI的绘制过程 2.3 UI事件的传递和处理过程 2.4 UI线程剖析 2.5 UI线程时间处理机制架构和实际处理流程   第03个主题:由参与或者主导的20多款商业Android应用程序感悟出的Android app设计思想、思路、经验(50分钟) 2.1  应用程序的经典模式 2.2  应用程序最佳实践 2.3  应用程序的运行模型   第04个主题:自定义用户UI(50分钟) 4.1  Android绘制UI的机制 4.2  创建自定义视图实战 4.3  创建符合视图实战   第05个主题:第4个主题:创建高级UI   (50分钟) 5.1  使用Canvas创建高级UI实战 5.2  使用RenderScript创建高级UI实战 5.3  使用OpenGL创建高级UI实战   第06个主题:LISTVIEW异步加载技术  (50分钟) 6.1  使用LISTVIEW异步加载技术的必要性 6.2  LISTVIEW异步加载技术编程实战   第07个主题:ListView分页加载技术(50分钟) 7.1 使用ListView分页加载技术的必要性 7.2 ListView分页加载技术编程实战   第08个主题:深入OpenGL与RenderScript 8.1  OpenGL中的MipMap、多apk、渲染模式与功耗管理; 8.2  自带的RenderScript API剖析; 8.3  RnederScript与NDK   时间 內  容 备注 第二天 第09个主题:处理手势和创建动画 9.1  GestureDetector与ScaleGestureDetector实战; 9.2  创建视图动画实战 9.3  创建属性动画实战   第10个主题:自定义标题栏 10.1  自定义标题栏的应用场景 10.2  自定义标题栏编程实战 10.3  自定义标题栏疑难问题解析   第11个主题:POPUPWINDOW 11.1  PopupWindow为Android程序带来的视觉冲击 11.2  PopupWindow编程实战 11.3  PopupWindow调试   第12个主题:图片拖拉功能 12.1  图片拖拉功能应用场景 12.2  图片拖拉功能编程实战   第13个主题:多点触摸与缩放功能 13.1  多点触摸与缩放功能应用场景 13.2  多点触摸与缩放功能编程实战   第14个主题:ANDROID中图形编程实战 14.1  使用LAYER LIST制作动态相框 14.2  使用STATELIST实现不同状态下图片的切换 14.3  使用LEVEL LIST揭秘电池电量变换状态   14.4  使用TRANSITION DRAWABLE实现动态过渡效果 14.5  使用CLIP DRAWABLE揭秘水平进度条 14.6  使用SHAPE DRAWABLE自定义几何图形   第15个主题:UI性能测试与优化 15.1  System.nanoTime()  Debug.threadCpuTimeNanos(); 15.2  Debug.startMethodTracing() ; 15.3  使用Traceview工具; 15.4  Traceview;                        
  • 热度 10
    2013-6-8 14:34
    508 次阅读|
    0 个评论
    Android 测试最佳实践培训 课程要点: 黑盒测试、 MonkeyRunner 、自动化测试; 国内知名公司 Android 测试现状; Android 测试框架和五大核心技术; Android 测试实战; Android 测试最佳实践与技巧; Android 测试时的性能分析; 第三方测试框架 Robotium 等的彻底剖析; Android 高级开发技巧实战汇总; 家林这么多年来 Android 超过 20 多款商业软件和 6 款硬件经验和感悟、展望 中国电子标准协会 http://www.ways.org.cn 课程目标:          本课程主要聚焦于Android测试和Android应用开发的高级技巧实战 培训对象:          Android开发人员 测试人员(可以是传统功能手机的测试人员,也可以是传统的其它平台的测试人员,以及对Android测试感兴趣的人员等)     时间 內  容 备注 第一天 第01个主题:对某知名网站手机端“起航行动”测试的思考 1.1 2010年的手机(主要是智能手机)“起航行动”介绍; 1.2 “起航行动”中测试组的介绍; 1.3 “起航行动”测试组实际的工作; 1.4 测试工程师与开发工程师的协作;   第02个主题:Android 测试框架剖析 2.1 Android测试框架架构图思考; 2.2 测试行为的完整运行流程;   第03个主题:Android测试的五大核心技术 3.1  基于JUnit的集成测试; 3.2  基于python脚本的monkey测试; 3.3  基于instrumentation的测试; 3.4  自动化测试; 3.5  第三方测试工具;   第04个主题:Android的测试实战:涵盖Activity、Service、ContentProvider的测试等 4.1Assertion:定制消息和静态导入 4.2 深入Assertion 4.3 TouchUtils类 4.4 Mock对象                    MockContext概述                    IsolatedContext类                    对文件和数据库的测试操作                    MockContentResolver类 4.5基类TestCase                    没有参数的构造方法                    传递参数的构造方法                    setName()方法 4.6基类AndroidTestCase                    assertActivityRequiresPermission()方法剖析和实战                    assertReadingContentUriRequiresPermission()   方法剖析和实战                    assertWritingContentUriRequiresPermission()   方法剖析和实战 4.7 Instrumentation                    ActivityMonitor内部类剖析和实战 4.8 InstrumentationTestCase类                    launchActivity和launchActivityWithIntent方   法                    sendKeys和sendRepeatedKeys方法                    runTestOnUiThread帮助方法 4.9 ActivityTestCase类                    scrubClass方法 4.10 ActivityInstrumentationTestCase2类                    构造方法                    setUp方法                    tearDown方法                    testPreconditions方法 4.11 ProviderTestCase2类                    构造方法                    实战 4.12 ServiceTestCase                    构造方法 4.13 TestSuiteBuilder.FailedToCreateTests   第05个主题:Android测试技巧 5.1 Android单元测试 5.2测试Activity和Application        Applications和preferences            RenamingMockContext类 TemperatureConverterApplicationTests类        测试Activity 5.3测试文件、数据库和ContentProvider        BrowserProvider测试 5.4测试exception 5.5测试本地和远程service 5.6 mock对象的进一步的应用        导入libraries        testTextChanged        Hamcrest介绍            Hamcrest匹配器            hasToString匹配器 5.7测试View 5.8测试parser           Android assets        parser activity        parser测试 5.9Memory Leaks测试   时间 內  容 备注 第二天 第06个主题:性能测试和分析 6.1 使用传统的Log中的方法 6.2 Android SDK中的性能测试 6.3使用Traceview和dmtracedump工具 6.4 Microbenchmarks   第07个主题:黑盒测试 7.1 Android黑盒测试的原理; 7.2 Monkey; 7.3 Monkey Runner; 7.4 编写Monkey Runner脚本;   第08个主题:深入Monkey Runner 8.1  Monkey Runner高级编程; 8.2  自动化测试;   第09个主题:第三方测试工具 9.1  Easy Mock; 9.2  Robotium架构解析 9.3  Robotium实现黑盒测试; 9.4  Robotium实现白盒测试;   第10个主题:国内Android测试情况思考 10.1  某知名终端厂商的Android测试 10.2  某知名网络公司的Android 10.3  其它;   第11个主题:Android应用开发高级技巧 11.1  改变Dalvik虚拟机内存分配大小 11.2  获取Root权限 11.3  应用程序如何获得和使用未发布的API功能 11.4  应用程序使用本地C/C++功能的问题   第12个主题:家林这么多年来Android的经验和感悟 12.1  由20多款商业软件得出感悟 11.2  有超过6款硬件产品获得的感悟; 11.3  android的过去 11.4  android的未来                            
  • 热度 15
    2013-2-20 09:59
    1426 次阅读|
    0 个评论
    学习对象:技术负责人/技术总监,项目经理/项目管理人员/架构师/,测试部门/质量管理部门,资深开发人员,一般开发人员 课程内容 课程背景 软件最核心的资产是代码,而对于一个日积月累的产品而言,代码的可维护性意味着未来的可持续性和成本竞争力。从这种角度来说,整洁的代码不只是开发人员的良好习惯,更是产品的关键质量因素。本课程从开发人员的视角,关注产品的核心代码的质量。通过大量的实例剖析讲解: 什么是好的代码:可读、可复用、可维护、可扩展。 如何编写好的代码:函数、类、变量、判定条件、模式、接口 如何对已有的代码进行质量度量 如何测试已有的代码 如何重构已有的代码 如何管理日益复杂的代码 为了切实帮助软件企业降低企业项目开发成本,大面积提高软件工程师编程能力和代码质量管理能力,我们特别推出了实战训练营. 分享多家大型研发中心代码管理经验给大家. 该课程适应于各个阶段的开发群体.初级工程师能够透过大师的眼睛来看待编程,了解编程的价值观和原则;具有丰富经验的设计师和架构师可以通过模式进行反思,探究成功实践背后的意义.把价值观,原则和开发实践结合;管理者通过学习业界著名研发中心的管理经验和失败的教训,来制定自己公司的代码管理策略.   培训目标: 面向以下不同的人群,有不同收获。 角色 收获 技术负责人/技术总监 树立代码质量意识 代码的两面性,静态结构与动态功能 软件技术债务和代码腐化 项目经理/项目管理人员/架构师 学习其他研发机构的代码管理思想 代码管理手段 代码管理相关流程和相关工具 代码审查 测试部门/质量管理部门 代码审查 代码检查列表 代码管理手段 代码管理制度的建立 资深开发人员 编程技艺和相关编程实践 重构手段 一般开发人员 编程技艺和相关编程实践 重构手段 代码坏味道  授课方式: 小班授课(12人之内)+ 案例讲解 + 小组讨论,60%案例讲解,40%实践演练 培训内容: 2天 第一篇: 编程是一种态度-------编程价值观 代码就是债务 内容一:代码是债务 代码的认识---代码就是债务 代码是债务,越少越好 你拥有的代码越多,添加新内容所要付出的成本就越高 通过案例分析让代码库尽可能小的方法: 尽可能创建通用的工具。 删除不用的代码或者特性。 确保项目模块化,并分割成相互没有关联的子项目。 熟悉你经常使用的代码库。 对代码库的规模时刻保持警惕,保持它是小而敏捷的。 通过国际研发中心电信计费系统演示代码是债务的思想,10多年国外研发团队设计与研发第一版本,目前几百人在维护 通过项目演示通过重构如何减少了一半的代码,维护的人员的减少 项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢? Bob大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。 编程价值观 内容一:编程价值观 编程的方法学 编程价值观---沟通,简单,灵活 优秀代码的评价标准, 什么是高质量编码? 特征是什么? 软件代码的可读性 代码的可扩展性 糟糕代码的特征 劣质代码的代价 大师评价整洁代码的标准 通过某项目代码是演示糟糕的代码,以及经过重构之后的代码,进行对此. 第二篇: 编程是一种技艺-------编程实践篇 高质量函数 内容一:高质量函数/过程 为什么需要函数 函数复杂度度量 函数圈复杂度以及度量 函数抽象层次-单一抽象层次原则SLAP(Single Level of Abstrction Principle) 函数实现模式之—组合函数(Composed Method) 万恶之源—函数过长 函数第一原则:是要短小,函数第二原则:是还要短小,函数第三原则:是必须短小 函数重构之道—抽取方法(Extract Method)和抽取对象函数 函数命名—怎样取好的函数名 通过大量项目代码分析,函数的遇到的各种问题,如何编程高质量函数 容二:函数代码重复 重复的危害 强加的重复/无意的重复/无耐心的重复/开发者之间的重复 不要重复自己DRY—Don"t Repeat Yourself Principle Make It Easy to Reuse(让复用变得容易) 魔法数(Magic number) 重复性代码(Duplicated Code) 接口不同的相似类(Alternative Classes with Different Interfaces) 系统分离关注点 系统架构的基础通用服务组件 通过某项目代码是介绍重复编码问题 演示研发过程之中的常见重复问题,以及如何解决 内容三:函数参数 函数参数过长 最理想的参数数量是零,其次是一,再次是二,有足够的理由才能使用三个以上参数. 函数参数重构之道-引入参数对象(introduce parameter object 函数参数的顺序. 不要把程序参数当做工作变量/临时变量 函数参数模式-collecting parameter 函数返回值 通过大量项目代码是函数参数问题 演示函参数的重构 内容四:变量 变量定义常见的错误 变量的数据类型 变量的初始化原则 变量的作用域 变量的持续性 变量的绑定时间 数据类型和控制结构之间的关系 变量的命名 全局变量 通过大量项目代码演示变量相关问题 演示变量的注意事项 复杂表达式与循环语句 内容一:条件表达式 IF/ELSE语句应该如何编写 Switch/Case语句应该如何编写 复杂条件表示式的危害 过分深层的缩进,或者“嵌套”,已经困扰了计算机界达25年之久,并且至今仍然是产生混乱代码的罪魁祸首之一 复杂表达式重构之道—引入解释变量/分解条件/抽取方法计算条件 表驱动法-多级嵌套IF语句的必然之道 表驱动法使用总则 某保险项目表驱动法应用案例分析 通过大量项目代码演示条件表达式编码问题 复杂表达式的注意事项,如何解决 内容二:利用多态解决复杂表达式 面向对象多态技术的新认识 减少使用if语句,重构到多态 以State/Strategy取代类型代码 引入Null Object 以Command替换条件调度程序 转移聚集操作到Visitor 转移装饰功能到Decorator 通过大量项目代码演示多态可以解决的编程问题 内容三:防止变异 防止变异-如何设计函数,对象,子系.使其内部的变化或不稳定性对其他元素元素产生不良影响 接口,多态,数据封装、间接性和标准都是源于PV 开闭原则 数据驱动(Data-Driven Design)编程 元数据或反射驱动(Meta-data or Reflective )编程 复杂业务逻辑-解释器驱动编程 案例—通过电信项目介绍如何设计应对变化 通过大量项目代码演示多态可以解决的编程问题 内容四:循环控制 选择循环的种类 循环控制 循环的创建-有内向外 循环与数组 递归 Goto语句 控制结构与复杂度 案例—通过电信项目介绍如何设计应对变化 通过大量项目代码演示多态可以解决的编程问题 高质量类设计与编码 内容一:类基础-数据抽象类型(Abstract Data Types) 类的基础:抽象数据类 需要用到ADT的场景 使用ADT的益处 基本类型依赖坏味道 数据泥团坏味道 案例—通过电信项目介绍数据的抽象 通过大量项目代码演示数据抽象类型解决的问题 内容二:数据封装 数据封装 数据的访问 类的封装 通过大量项目代码演示数据封装 内容三:面向对象设计与编程核心----职责分配 单一职责原则 RDD-职责驱动的面向对象设计方法 内容四:面向对象的编程 上帝类/过大的类--违反单一职责 依恋情结-一个方法视乎过于强调处理其他类的数据,而不是处理自己的数据 发散式改变 散弹式修改 消息链 中间人 不当的紧密性 案例—通过电信项目介绍OOP 第三篇: 编程是一种习惯-------管理实践篇 代码改善 内容一:代码重构 重构必然性 实际重构遇到的4大问题 如何发现重构点 如何去重构(重构方式) 如何知道重构何止截止 如何保证重构的正确性 介绍常见的重构技术 重构到模式的目录 内容二:代码测试 代码测试 代码测试的技巧集锦 代码测试的典型错误 改善测试过程 内容三:代码调试 代码调试 寻找代码缺陷 调试的心里因素 调试工具 内容四:修改遗留项目代码的艺术 必须修改遗留的代码起因 遗留代码修改危险事项 如何对依赖代码做测试 依赖代码的感知与分离 依赖代码修改的接缝技术 修改依赖代码的工具 降低风险的措施 接依赖技术 代码管理 内容一:代码质量度量 代码质量的度量 业界其他度量标准 通过分析多个实际项目,分别度量相关是否标准 内容二:代码静态分析工具 代码静态分析工具概述 以Java语言代码静态分析工具为例介绍 CheckStyle:用于编码标准 PMD 的 CPD:帮助发现代码重复 Coverlipse:测量代码覆盖率 JDepend:提供依赖项分析 Metric:有效地查出复杂度 其他语言相关代码静态分析工具 通过案例演示工具在项目之中的应用 内容三:代码评审 代码评审前期准备 代码评审的代码量 代码评审的检查表 代码评审的总结与学习 内容四:代码管理 结合国内多家研发中心的代码管理思路分享 代码质量体系的建立   课程特点: 1、理论与实践相结合,解决你的实际问题。 2、真实案例的剖析,深入浅出的讲解,使你能学以致用。 ************************************************** 【主办单位】 智通培训资讯网http://www.ways.org.cn 【咨询热线】 0755-26506757 13798472936    【联系人】 李正华 【报名邮箱】 martin-lee@163.com     培训客服QQ: 52630255   
相关资源