【C#懒蛋编程——5分钟经验分享】02使用partial关键字,分离代码

因为篇幅很短,所以尝试全文字写法。几分钟看完的文字也没必要用十几分钟写完是吧。

C#中的partial关键字,是一个非常有用的东西,尤其是在代码组织方面。

1.

每一个项目都会构建大量的class文件,也需要使用这些class创建非常多的对象。但是出于业务安全性和调试方便,在创建对象前需要对对象的参数进行有效性检测(例如断言),而对象的创建,是一个非常复杂的事情,有时需要一组函数才能完成。这两者(class本身的代码和创建对象的代码)的代码混在一起,搞得单个class文件非常臃肿。

partial可以把类逻辑(new我还是放在这里面的),和对象创建代码彻底分开。对我来说这是一个很有用的功能。一般构建一组class(通常是一个父类和一堆子类),我会分成若干文件,Parent,Child1,Child2……等,再使用一个专门的XXXHelper文件来编写各种Child的对象生成代码。Helper中可能是instance,create等写法,也可能是各种工厂,再加上一些有效性检测和异常处理。这样代码非常清晰,尤其是Child的代码可以写的很干净。

2.

partial还有一类非常有意思的写法。很多项目都喜欢编写全局工具或数据类,名叫Global或者Config等,里面有很多数据和函数。根据经验判断,真正全局所有模块使用的东西不会很多。很多东西都只是在部分模块中使用。时间久的话,你根本分不清楚这些函数或数据是对应哪个模块下面的,这时候partial的分散写法就有很大优势了。你可以写一些分散文件,集成到各个模块的文件夹下面,当然各个模块通用的还是放到一个文件里面好,partial可以保证你依然能通过同一个全局名字访问他。

由于partial关键字,代码都在同一个类名字下面,你可以在不同的文件中自由移动这些代码。

3.

partial对自动化支持非常有用,你可以把代码分成两部分,一部分是业务代码,一部分是自动化生成代码(例如很多领域的UI编辑器就是这么干的,C++的做法也是类似,只是没partial用的别的方法,思路都是一样)。因为在不同文件中,自动化生成代码不会干扰业务代码。自动化生成对于提高开发效率至关重要。

原文地址:http://blog.51cto.com/goldlion/2148193

时间: 2024-10-10 21:10:10

【C#懒蛋编程——5分钟经验分享】02使用partial关键字,分离代码的相关文章

【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效

因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会遇到很经典的迭代器失效问题. 解决这个问题的常见思路是,对容器A中需要删除的元素,放入一个临时容器B.然后再次遍历这个容器B,将元素取出并在A中删除.这么写缺点很多,两次循环,而且加入临时容器,把代码搞得很难看. 其实遍历删除的同时,防止(或曰避免遇到)迭代器失效的最简单方法是逆序遍历同时删除.这种

运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析

运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下crontab不能正确执行Shell脚本的问题(一)> <运维经验分享(四)--关于 java进程管理的服务控制脚本编程思路分析> <运维经验分享(五)-- 改进的java进程管

编程经验分享:大神学编程居然从抄代码开始!你敢信?

说说学编程的一些经验 程序员学的知识分为两种,一种是偏理论的,例如计算机原理,计算机网络.数据库原理.以及操作系统原理,这些知识都是以理论为基础,注重的理解能力. 另一部分主要以实践为主,就是平常当工具用的,例如 linux 日常命令工具.数据库SQL操作.还有写代码,这些知识学起来没什么技巧,ctrl c ctrl v,拿到教程就是照着抄,唯手熟尔. 不过照着抄代码需要做到3点: 第一步:理解,如果照着教程敲代码没有建立在理解基础之上,那叫瞎抄,就跟上学的时候差等生抄别人作业没啥区别,抄完之后

【原创】经验分享(17)编程实践对比Java vs Scala

scala 官方地址 https://www.scala-lang.org/ 本文尽可能包含了一些主要的java和scala在编程实践时的显著差异,展现scala的代码的简洁优雅:scala通吃面向对象编程Object Oriented Programming和函数式编程Functional Programming,有很多开源组件都用scala开发(比如spark.kafka等),直接看代码对比: 一 Loop循环 1 for 取出0-10之间的偶数 scala for (i <- 0 to 1

项目经验分享[转自min.jiang]

最近三个月,我非常荣幸的做为TeamLeader带领几个小组成员做了一个国外项目,这里想为大家分享一些小经验,尽管我佣有六年多的项目经验,但我一直的方向是架构师.大家知道架构师一般情况是偏向技术方向,我也不例外,前三年,主要精力都花在技术架构上,挖空心思在通用平台上做出自己的东西,体现个人价值.但最近一年也想在项目管理上有所突破,有人可能认为方向走偏了,但我不这样认为,在中国的软件环境下,在很大程度上,公司更希望全才,或者说有些公司并不仅仅希望架构师只懂技术.而架构师如果一味的只走技术路线,在某

阿里巴巴校招四面经验分享

总结 06.20我从北京xxxx有限公司离职,结束了一年的见习生涯.07.05-08.04在帮我姐夫做翻译:毕竟这段时间比较空闲,在空闲的时候我都是在准备面试,不管是Java基础.JVM.数据库.数据结构.分布式.集群还是项目都准备的差不多,期间我看过<数据结构与算法分析>和<Java编程思想>等书籍.08.03我回到深圳,08.04开始的阿里一面到08.22的四面,今天得知四面挂了感觉很可惜,毕竟差Offer仅一步之遥,但又在意料之中:你选择公司,公司同样也选择你,如果你没有足够

公司实习经验分享

近期在一家创业公司做技术 .由于是从一開始跟着做技术,所以到如今给了个技术总监的title. 公司的全部程序都是由我一个人来维护的.公司是做电商创业. pc端从前端html到css 到js到smarty模板 到php到数据库都是一手调较. wap端从为了參加百度推广的一千元优惠活动进行了优化才在最后几分钟成功评上三颗星. app端android也是我一手改动.近期可能ios端也要我来做了.. 经验分享: 原来认为创业真是简单. 尤其是技术型创业.可是经历过这次就不一样了.原来做站点是要申请icp

大数据经验分享

大数据经验分享 随着互联网的发展,尤其是近期互联网大会召开,再一次谈到大数据,大数据发展趋势已经成为一种必然.那么我们怎样去迎接这样一个新的数据时代?我们可以看到越来越多的人想学习大数据,可是却无从下手,根据自己的经验为大家分享一下大数据的知识: 一.大数据是什么?它的特征? 大数据指一般的软件工具难以捕捉.管理和分析的大容量数据. 大数据有4V特征:Volume(大量).Velocity(实时).Variety(多样).Value(价值). 大数据(big data),或称海量资料,指的是所涉

【求建议】毕业之声——信院IT类毕业学子经验分享交流会

一:缘由 在和很多学子交流,及上课的经历中,发现一个很普遍的现象:部分大一学生即失去了对学习.对专业的兴趣.有人在迷茫之后奋起直追,从而珍惜利用不多的大学时光努力提高自己:有人在迷茫中沉沦,沉迷于游戏:有更多的人在迷茫中选择了社团,社团活动的高参与感让我们保持激情:有人选择了沉默,熬到一张学位证书(沉默的大多数).能够在大二.大三,甚至大四发现自己兴趣.职业.目标与理想,并为之努力过半年以上的同学,可能不足1/3. 在和这不多的学子接触过程中,发现一些值得期待的事情.如信管1102 刘贻富.软件