高效率地开发,不仅仅需要技术,还需要的是一些现实的技巧,相对.NET Framework 1.1中的C#来说,语言中提供的partial关键字,可以说是一个伟大的创举,在真实的业务开发中,很多时间会遇到各类不同的函数归类整理的问题,尽管在VS.NET IDE中有伟大的IDE标志#regoin...#endregion可以很好地进行分类,但它仍然不是一个理想的模式,很多时候,在只有内部业务处理的情况下,我们更加乐意在一个类里完成所有的功能,而并不想通过创建一系列的命名空间中包括一堆public函数来实现.
  这个现实情况也许从纯情的对象化思想来看并不完美,但实际上有很多因素让人郁闷,比较说,比较好的代码辅助工具CodeRush,它的颜色大量渲染造成了IDE速度地变慢,在一个有上万行代码的文件中,打开的速度是非常令人郁闷的.有人也许会说,怎么会有上万行代码,难道不能把它们给处理一下吗?分割成多个文件.这个想法好,但要是在古代没有partial class的时期,这就会产生大量的问题:新创建的文件类命名为什么?是否合理?代码分割后,很多地方的代码要修改为"类名.方法"的形式,能保证对源代码的修改是安全可靠的吗?创建一个这样一个在系统意义上来说没有单独存在价值的类是否有必要?
  有一些人乐意把其中的可重用函数提炼出来,形成一个新的类,作为一个单独类的使用,这是无可厚非的,但是,如果要是遇到一堆逻辑是属于此类的方法,但是因为客观条件造成的方法太多而造成必须提炼时,应该怎么办?
  不清楚古代的人是怎么处理的,但现代一些的方法,通过partial类不妨是一个很好的方案,大凡类似于业务单据一中的IDE接口一类的,在一个part中,然后此单据不同的逻辑业务就在不同的逻辑中,这样的好处主要在于效率,不要指望类设计者一开始就考虑好代码量并且能够给你设计足够的类来实现,就现实开发来说,没有哪个公司有足够强力的设计者能细致到函数级别地提供设计结构给你,所以最中间的洽入点就是,设计者通过分析师给出来的要求设计出系统结构,并规划好大致的类及主要的公共调用函数之后,内部的黑盒开发应该是由开发者即程序员自己来决定函数的取舍.
  就以前我从事过的项目经验来说,把类这一步化成了命名空间,分派命名空间及规定的必定实现公共类后,其它的任程序员在命名空间中发挥--无论你怎么发挥,只要不影响我的公共调用就OK.不幸地是,尽管这类的方法是很有效率的,但造成了一个非常巨大的问题就是,命名空间太,using来using去,怎么看也不漂亮,由于命名空间被占用了,更高层次的分割就必须通过命名空间的堆积来完成,这种堆积有时还有一些副作用,比如你在IDE中,查看命名空间时,经常会发现程序员们自己创造的一些古怪的私有空间名称,本来自由给出了无可厚非,但是,这样一来,始终觉得心里不舒服,因为如果能够看见,就容易勾引人的好奇心.
  通过partial虽然不能解决"你能够看见"问题,但是它毕竟挪出了命名空间的地盘,可以使你更好地组织类与命名空间,如果没有partial,就会仅仅因为"看起来不顺眼"的而导致不得不放任一个命名空间给程序员.
  partial还有一个更有趣的强大功能就是可以打造白盒式的测试驱动开发,在古老的开发中,一般测试驱动开发有两种形式,第一种是创造一个测试项目,对项目进行黑盒式处理,这样的控制很不精细,尽管微软的开发中提供了变通的私有函数的测试办法,但是个人认为那看起来"太扭曲",要黑就黑,搞得模模糊糊扭扭捏捏地干嘛.第二种是白盒测试,就是在类内部通过#if..#endif预处理来对测试代码进行控制,这种好处是无须太多麻烦就可以直观地对指定成员编写测试代码,可以说是一个很精细化地控制,但是同时有一个巨大的问题就是,它这样的方法,有诸多不良因素,比如首先要在项目内引用测试专用的程序集,同时也造成了代码的凌乱,尽管#region...#endregion可以解决一部分问题,但仍然不够爽,理由同前,代码太多,IDE就太变慢了,不利于有效率地开发.
  partial可以部分解决这个问题,说是部分解决是因为无法解决引用程序集的问题,这是必须的,引用程序集的问题只能通过配置比如nant,msbuilt之类的来解决.partial可以解决的问题就是,可以针对每一个片断类创造一个Test用例类,并用预定义指令进行修饰,在类的结构列表中,命名上有一个小技巧就是不要再命名成"test_methodname"的形式,而应该用"methodname_test"的形式,这样一来,许多事情就好办了,在类的浏览列表中,由于按字母排序,很轻易就可以看出,哪一些函数有了测试用例,哪一些函数没有,非常方便.

转载于:https://www.cnblogs.com/William_Fire/archive/2007/08/31/876538.html

利用partial快乐驱动开发相关推荐

  1. USB虚拟总线驱动开发扩展之(利用虚拟USB总线驱动实现U盘模拟)

    by fanxiushu 2020-03-25 转载或引用请注明原始作者. USB虚拟总线驱动的使用范围是非常广泛的,可以使用它来模拟各种通用的USB设备. 以前的文章阐述过基于windows平台和基 ...

  2. 我要转行Linux驱动开发了,驱动开发的工作是什么样的情况,希望大神给点建议,也希望大家给我一点鼓励

    我刚大学毕业的时候是2010年,什么都不会,只会点c,后来介绍去做JavME,做了一年,后又做了一阵子Java企业级开发.感觉这不是我想要的工作,在这段时间里面,除了实际编程能力有了提高,其他的没学会 ...

  3. 虚拟串口驱动 开发_服务虚拟化如何与测试驱动的开发相关

    虚拟串口驱动 开发 敏捷的软件开发方法依赖于服务虚拟化,以赋予每个IT团队自治权. 这种方法消除了障碍,使自治团队可以继续开发活动,而不必等待任何人. 这样,团队就可以开始迭代/冲刺,从而开始集成测试 ...

  4. 可观察性驱动开发,探索未知之地

    可观察性驱动开发与监控有什么不同?随着我们的分布式系统变得越来越复杂,随着我们对DevOps测试.自动化和效率的追求,筒仓的打破,为了了解代码中未知的未知,ODD作为一种超级监控而出现.本文包括Hon ...

  5. Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结

    http://blog.csdn.net/zqixiao_09/article/details/51057086 设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程 ...

  6. 《Android深度探索(卷1):HAL与驱动开发》——6.4节使用多种方式测试Linux驱动...

    本节书摘来自异步社区<Android深度探索(卷1):HAL与驱动开发>一书中的第6章,第6.4节使用多种方式测试Linux驱动,作者李宁,更多章节内容可以访问云栖社区"异步社区 ...

  7. 《Linux设备驱动开发详解 A》一一2.3 接口与总线

    本节书摘来华章计算机出版社<Linux设备驱动开发详解 A>一书中的第2章,第2.3节,作者:宋宝华 更多章节内容可以访问云栖社区"华章计算机"公众号查看.1 2.3 ...

  8. Linux驱动开发环境配置(内核源码树构造)

    来源:季义钦BLOG 作者:季义钦 初次接触Linux驱动程序开发,买了一本<Linux设备驱动程序>,第一件事当然就是构建开发环境了!!! 它上面有一个Hello World的列子: / ...

  9. WINCE下SOS驱动开发

    ********************************LoongEmbedded************************ 作者:LoongEmbedded(kandi) 时间:201 ...

最新文章

  1. 程序包 javax.servlet 不存在 解决办法
  2. 多变量线性回归程序实现
  3. 格瑞光电:智慧城市建设的引领者
  4. Jquery实用笔记
  5. archlinux使用sudo
  6. 闪回flashback table配合flashback versions query的注意事项
  7. 安装libvirt管理套件(C/S架构模式,用户管理kvm虚拟机)
  8. 开始我的.NET的学习旅程
  9. html颜色转换rgba,16进制颜色怎么转换为rgba,怎么获取16进制颜色值rgba的值
  10. 如何注册、发布 CSDN博客
  11. 流量卡之家:物联网系统解决交通拥堵 全面开启未来绿色出行
  12. 2022年最新常用的浏览器排行榜单
  13. 周杰伦何以成青少年偶像
  14. 对于网站优化该怎么去做外链?
  15. 第三方应用微信登录接口
  16. 智力题:1000瓶酒.10只老鼠.有一瓶酒有毒,每只老鼠可以喝无限多的酒,如何测一次就找出哪瓶酒有毒
  17. 程序员怎样才能实现财富自由
  18. 基于office三件套的一次性权限维持
  19. Matlab中的\ 和/和pinv的关系以及运算
  20. eclipse插件安装方法备忘

热门文章

  1. [Leetcode]笔记
  2. CUDA遇到在VS创建的项目运行报C1041错误
  3. asyncio简单入门(二)
  4. gcc: error: CreateProcess: No such file or directory解决方案
  5. [三个版本]自定义int()函数(Python实现)
  6. 空行替换_Word怎么批量删除空行和空格?有技巧很简单!
  7. 【电磁场实验作业】有限差分法(FDM)求解静电场电位分布
  8. Java操作符自测运算符精度
  9. Output Operations on DStreams
  10. 线程间通信的三种方法 (转)