??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲一区免费观看,亚洲嫩模在线观看,国产91精品一区二区麻豆亚洲
http://m.tkk7.com/adaiye/archive/2007/10/11/151935.htmladaiyeadaiyeThu, 11 Oct 2007 01:22:00 GMThttp://m.tkk7.com/adaiye/archive/2007/10/11/151935.htmlhttp://m.tkk7.com/adaiye/comments/151935.htmlhttp://m.tkk7.com/adaiye/archive/2007/10/11/151935.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/151935.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/151935.html一l一致的的命名约定对框架的可用性及光要?名字要易于理解,同时必须传达每个元素的功能?/p> 大小写约?/h2>
标识W的大小写规?/p>
PascalCasingQ如HtmlTag IOStream
camelCasingQ如htmlTag ioStream
- 要把PascalCasing用于由多个单词构成的名字I间、类型、以及成员的名字Q?
- 要把camelCasing用于参数的名字?/li>
通用命名U定
单词的选择
Ҏ架中标识W的名字来说Q很重要的一Ҏ一目了然?/p>
名字的意思清楚比长度短更重要。名字应该与场景、系l的逻辑l成或物理组成以及ؓ人熟知的概念相对应,而不应该与技术或框架相对应?/p>
- 要ؓ标识W选择易于阅读的名字;
- 要更看重可读性,而不是更看重短性;
- 不要使用下划Uѝ连字符以及其他M既非字母也非数字的字W;
- 不要使用匈牙利命名法Q?
- 避免使用与广泛用的~程语言的关键字有冲H的标识W?/li>
使用单词~写和首字母~写?/strong>
一般来_不要在标识符中用单词羃写或首字母羃写:宁可名字长一点,也不要别人看不懂?nbsp; 其不要使用未被q泛接受的单词羃写和首字母羃写词?/p>
- 不要使用~写词或~略词作为标识符名字的一部分
用GetWindow 不用GetWin - 不要使用未被q泛接受的首字母~写?br>多谓q泛接受Q用搜烦引擎在网上搜索该首字母羃写词Q如果返回的前几个结果与期望相符Q那么该首字母羃写词才有资格被称Z所周知?/li>
避免使用语言Ҏ的名?/strong>
- 要给cd名用语义上有意义的名字Q而不要用特有的关键?br>GetLength比GetInt要好
- 要用CLR的通用cd名,而不要用语aҎ的别?
- 要用常见的名字Q比如value或itemQ而不要重复类型的名字
为已有API的新版本命名
当用新类型和新成员接替或取代已有的类型或成员Ӟ如何选择名字Q?/p>
- 使用与旧API怼的名?
- 要优先用后~而不是前~来表C已有API的新版本
q样有助于在览文档或用Intellisense时发现新版本Q按字母排序 - 可以考虑使用全新但有意义的标识符
- 要用数字后~来表C已有API的新版本
有些名字Q或工业标准Q不宜添加后~或改? - 不要在标识符中用“Ex”“New”等cM的后~来区分相同API的不同版?
- 要在引入64位整敎ͼlongQ而非32位整数进行操作的新版本API时用?4”后~Q反之亦然?/li>
E序集和DLL的命?/h2>
E序集是一个部|单元,同时q代表托代码程序的w䆾。虽然程序集可以分布一个或多个文g中,但一般来说一个程序集仅与一个DLL相对应?/p>
名字I间与DLLE序集的区别Q?/p>
名字I间Q一l逻辑实体
DLL和程序集Q打包和部v时的一个单
- 要ؓE序集和DLL选择提示性的名字Q比如System.DataQ这样很Ҏq道它的大致功能?
- DLL命名Q?lt;Company>.<Component>.dll
名字I间的命?/h2>
<Company>.(<Product>|<Technology>)[.<Feature>][.<Subnamespace>]
- 要用公司名称作ؓ名字I间的前~Q不要用~写
- 要用E_的与版本无关的品名UC为名字空间的W二?
- 不要Ҏ公司的组l架构来军_名字I间的层ơ结构,因ؓ公司内部l织的名UC般来说不会持l太长的旉
- 要用PascalCasing大小写风|q用点号来分隔名字空间的各部分?br>如Microsoft.Office.PowerPoint
- 考虑适当的时候在名字I间中用复数Ş式?nbsp; 首字母羃写词例外
System.Collections
System.IO - 不要用相同的名字来命名名字空间与位于该名字空间中的类?br>如:不要名字空间命名ؓDebugQ然后又在该名字I间中提供一个名为Debug的类?/li>
名字I间和类型冲H?/strong>
- 不要引入太一般化的类型名Q比如Element、Node、Log以及Message?/li>
不同cd的名字空_有不同的规范来避免类型名的冲H:
- 应用E序模型名字I间Qapplication model namespaceQ?br>属于单个应用E序模型的名字空间经怸起用,但是它们几乎不合属于其他应用E序模型的名字空间一起?br>System.Windows*
System.UI* - 基础设施名字I间Qinfrastructure namespaceQ?br>此类别包含一些在开发常用应用程序时很少会导入的名字I间
- 核心名字I间Qcore namespaceQ?br>包含了所有的System名字I间Q但应用E序模块名字I间和基设施名字I间除外?nbsp; 包括System、System.IO、System.Xml以及System.Net{等
- 技术名字空间组Qtechnology namespace groupQ?br>此类别包含所有那些以相同的两个前~Q?lt;Company>.<Technology>*Q开始的名字I间?/li>
cR结构和接口的命?/h2>
一般来说类型名应该是名词词l。如果无法ؓcd扑ֈ一个名词词l,那么应该重新考虑cd的M设计?/p>
另一个中重要的考虑因素Q最易于识别的名字应该用于最常用的类型?/p>
最常用的类型名应该反映Z用场景,而不是承层ơ?/p>
- 要用名词词组来给cd命名。用PascalCasing风格
- 不要l类名加前缀
只有接口才能Q可以)被加前缀“I”,那是因ؓ.NET框架受到COM及Java的媄? - 考虑让派生类的名字以其基cȝ?br>public class FileStream : Stream {...}
- 要确保一对类/接口的名字只差一个“I”前~Q如果该cL该接口的标准实现?br>public interface IComponent {...}
public class Component : IComponent {...}
泛型cd参数的命?/strong>
- 要用描述性的名字来命?
- 考虑用T来命名参数类?
- 要给描述性的cd参数名加上T前缀
- 考虑在类型参C昄出施加于该类型参C的限?/li>
枚Dcd的命?/strong>
- 要用单数名词来命名枚丄型,除非它表C的是位域(bit fieldQ?
- 不要l枚丄型的名字d“Enum”后~Q也不要d“Flag”、“Flags”等后缀
- 不要l枚丄型值的名字d前缀
此规范与C++中通常所使用的恰好相反。在C++中给枚D的每个成员加上完成的限定W是很重要的Q因为它们可能在枚D名的作用域之外被讉K。但是在托管代码中,枚D成员只能通过枚D名的作用域来讉K?/li>
cd成员的命?/h2>
cdQ方法、属性、事件、构造函数、字D?/p>
Ҏ的命?/strong>
要尽量根据方法所对应的Q务来l它们命名,而不要根据一些实现细节?/p>
属性的命名
- 要用名词、名词词l或形容词来命名属?
- 不要让属性名看v来与“Get”方法的名字怼
- 要用肯定性的短语QCanSeek而不是CantSeekQ来命名布尔属?
- 考虑用属性的cd名来命名属?br>public enum Color {...}
public class Control
{
public Color Color
{
get {...}
set {...}
}
}
事g的命?/strong>
- 要用动词或动词短语来命名事g
事gL表示一些动作,要么正在发生Q要么已l发? - 要用现在时和q去时来赋予事g名之前和之后的概?br>H口关闭之前发生的close事gQClosing
H口关闭之后发生的close旉QClosed - 不要用Before和After前缀或后~来区分前|和后置事g
- 要在命名事g处理函数Q用作事件类型的委托Q时加上“EventHandler”后~
- 要在事g处理函数中用sender和e作ؓ两个参数的名?br>senderQ触发事件的对象Q在整个.NET框架中,sender为objectcd
- 要在命名事g的参数类型时加上“EventArgs”后~
字段的命?/strong>
- PascalCasing风格
- 名词或名词短?
- 不要l字D名d前缀
参数的命?/h2> - camelCasing风格
- 要用描q性的参数?br>参数名要具备_的描q性,使得在大多数情况下,用户Ҏ参数的名字和cdp够确定它的意?
- 考虑Ҏ参数的意思而不是参数的cd来命名参?/li>
资源的命?/h2>
本地化的资源好比是属性,可以通过特定的对象来引用。因此,它的命名规范与属性的怼?/p>
- 要在命名属性关键字Qresource keyQ时使用PascalCasing大小写风?
- 要标识W的名字h描述性而不是名字变短
- 不要使用各主要CLR~程语言Ҏ的关键字
- 要在命名资源时用字母、数字和下划U?
- 要用点号来给标识W清楚地划分层次
- 要在为异常消息资源命名是遵@下面的命名约定:
资源标识W应该是异常的类型名加一个简短的异常标识W,之间以点号分?/li>

]]>- 关于考SUN JAVA PROGRAMMER的几点徏?/title>http://m.tkk7.com/adaiye/archive/2007/10/06/150735.htmladaiyeadaiyeSat, 06 Oct 2007 13:02:00 GMThttp://m.tkk7.com/adaiye/archive/2007/10/06/150735.htmlhttp://m.tkk7.com/adaiye/comments/150735.htmlhttp://m.tkk7.com/adaiye/archive/2007/10/06/150735.html#Feedback1http://m.tkk7.com/adaiye/comments/commentRss/150735.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/150735.html阅读全文

]]> - Adobe Flex 3最有趣的特征之一 :Web设计者和开发者的盔Rhttp://m.tkk7.com/adaiye/archive/2007/09/21/147099.htmladaiyeadaiyeFri, 21 Sep 2007 06:26:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/21/147099.htmlhttp://m.tkk7.com/adaiye/comments/147099.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/21/147099.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/147099.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/147099.html阅读全文

]]> - 漫谈C#之关键字Q?Q?/title>http://m.tkk7.com/adaiye/archive/2007/09/20/146824.htmladaiyeadaiyeThu, 20 Sep 2007 09:11:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/20/146824.htmlhttp://m.tkk7.com/adaiye/comments/146824.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/20/146824.html#Feedback2http://m.tkk7.com/adaiye/comments/commentRss/146824.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/146824.html 每一U语a都有非常多的关键字,而且q些关键字也都大同小异,不过毕竟q是有些许的不一栗有些关键字大家到的多了,自然q悉了Q但是有些关键字用得不大多,或者是新引入的Q所以就不大熟悉了。我q_在用的时候,是会碰C些关键字Q感觉有点生疏,q_也会把这些我不懂的关键字的用法了解一下ƈ记录下来。想到应该也有很多跟我同L人,所以就把我的记录跟大家分n一下。请各位tx多多指正Q?br>讉K关键?/strong>
baseQ用于派生类中访问基cȝ成员 从静态方法中使用base关键字是错误的?br>转换关键?br>explicitQ用于声明用户定义的昑ּcd转换q算W? 1 class MyType
2 {
3 public static explicit operator MyType(int i)
4 {
5 // 从int转换到MyTypecd的代?br>6 }
7 }
昑ּ转换q算W必通过cd转换调用
1 int i;
2 MyType x = (MyType)i; // int到MyTypecd的{换需要进行类型{?
如果转换操作可能D异常或信息丢失,则应用explicit关键字标记它?br> implicitQ用于声明用户定义的隐式转换q算W?nbsp;
1 class MyType
2 {
3 public static implicit operator int(MyType m)
4 {
5 // 从MyType转换到intcd的代?br>6 }
7 }
1 MyType x;
2 int i = x; // 隐式地调用MyType的MyType到intcd的{换运符
隐式转换可以通过消除不必要的cd转换来提高源代码的可L?br> 一般情况下Q调用某一个隐式{换时Q应当绝不会引发异常Qƈ且不会造成信息丢失。否则,应将其标Cؓexplicit?br>Ҏ参数关键?/strong>
如果声明Ҏ的参数时没有指明ref或outQ该参数具有与该方法相关的倹{这个值在Ҏ中能被更改,但是当程序返回到调用q程Ӟq种改动不会被保留?br>
paramsQ用于指定在参数数目可变时带有参数的Ҏ参数
在方法声明中的params关键字之后不允许引入M其他参数Q但在其前面可以有其他参数。而且在方法声明中只允怋用一个params关键字? 1 public static void UseParams(params int[] list)
2 {
3 for(int i = 0; i < list.Length; i++)
4 {
5 Console.WriteLine(list[i]);
6 }
7 }
8
9 public static void Main()
10 {
11 UseParamsQ?,2,3Q?
12 int[] myArray = new int[3] { 10,11,12 };
13 UseParams(myArray);
14 }
ref、out 使方法可以引用传递到该方法的那一个变量,当程序{臌用方法时Q在Ҏ中对参数所做的M改动都将传给该变量?br> ref参数的值将被传递到ref参数Q故必须首先初始化;而out参数不然Q它的g会被传递到该out参数Q故不必首先初始化,但它必须在方法返回以前ؓout参数赋倹{?br> 属性不是变量,不能作ؓref/out参数?/p>
]]>
- 大四啦!http://m.tkk7.com/adaiye/archive/2007/09/10/144093.htmladaiyeadaiyeMon, 10 Sep 2007 13:16:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/10/144093.htmlhttp://m.tkk7.com/adaiye/comments/144093.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/10/144093.html#Feedback3http://m.tkk7.com/adaiye/comments/commentRss/144093.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/144093.html阅读全文

]]> - 人生轨迹的改变,首要在于思维方式的改变。-Q{?CSDN.NET公司内部论坛Q迈向成功的“脑力操?http://m.tkk7.com/adaiye/archive/2007/09/09/143826.htmladaiyeadaiyeSun, 09 Sep 2007 11:26:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/09/143826.htmlhttp://m.tkk7.com/adaiye/comments/143826.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/09/143826.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/143826.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/143826.html阅读全文

]]> - ?NET设计规范?amp;mdash;—学习W记Q?.5Q框架设计基http://m.tkk7.com/adaiye/archive/2007/09/06/143159.htmladaiyeadaiyeThu, 06 Sep 2007 06:07:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/06/143159.htmlhttp://m.tkk7.com/adaiye/comments/143159.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/06/143159.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/143159.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/143159.html
对用戯言Q真正的开发效率来自能够轻易地创造非凡的产品Q而ƈ非来自能够轻易地创造垃圾?
1. 场景驱动设计原则
2. 低门栏原?
3. 自说明对象原?
4. 分层架构原则 阅读全文
]]> - Java~程实战:设计自己的Annotation http://m.tkk7.com/adaiye/archive/2007/09/06/143063.htmladaiyeadaiyeThu, 06 Sep 2007 01:39:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/06/143063.htmlhttp://m.tkk7.com/adaiye/comments/143063.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/06/143063.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/143063.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/143063.html阅读全文

]]> - ?NET设计规范?amp;mdash;—学习W记Q?.4Q分层架构原?/title>http://m.tkk7.com/adaiye/archive/2007/09/05/142941.htmladaiyeadaiyeWed, 05 Sep 2007 08:54:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/05/142941.htmlhttp://m.tkk7.com/adaiye/comments/142941.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/05/142941.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/142941.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142941.html分层设计使得在单个框架中同时提供强大的功能和易用性成为可能?/p>
- 考虑Ҏ架进行分层,佉K层API能提供最佳的开发效率,低层API能提供最强大的功能和最丰富的表现力?br>通俗地讲Q象我这L菜鸟只能用高层APIQ太低层都不懂,而牛Z都是想用也更愿意用低层API的强大功能的Q个人意见)。psQ这边的高层跟低层不是指高深的意思。而是从易用性方面考虑的!
- 避免把低层API和高层API混在同一名字I间中,如果低层API非常复杂的话Q即包含了许多类型)?
- 要确保单个特性域中不同的层能很好的集成在一赗?/li>

]]> - ListView 日期,数字,字符排序http://m.tkk7.com/adaiye/archive/2007/09/05/142929.htmladaiyeadaiyeWed, 05 Sep 2007 08:34:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/05/142929.htmlhttp://m.tkk7.com/adaiye/comments/142929.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/05/142929.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/142929.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142929.html阅读全文

]]> - ?NET设计规范?amp;mdash;—学习W记Q?.3Q自说明对象原则http://m.tkk7.com/adaiye/archive/2007/09/05/142869.htmladaiyeadaiyeWed, 05 Sep 2007 05:11:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/05/142869.htmlhttp://m.tkk7.com/adaiye/comments/142869.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/05/142869.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/142869.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142869.html
* 要确保API是直观的Q无需查阅参考文就能用于基本场?
你M希望写个“Hello World”都L阅API文吧?
* 要ؓ所有的API提供优秀的文?
一斚wQƈ非所有的API都能自说明。不同的Z认ؓ不同的API是自说明的;
另一斚wQ有些h惛_开始用API之前完全理解它们?nbsp; 阅读全文
]]> - 做礼?/title>http://m.tkk7.com/adaiye/archive/2007/09/03/142242.htmladaiyeadaiyeMon, 03 Sep 2007 03:39:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/03/142242.htmlhttp://m.tkk7.com/adaiye/comments/142242.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/03/142242.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/142242.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142242.html又是一周过MQ星期一又来了!早上Q在公司里偷个空Q写点东东:
昨天是星期日Q基督徒做礼拜的日子Q?/p>
自从呆子dM英国Q也有一q多没见到她了。昨天我们越好见面的Q还有冲哥和晓丹Q昨天也是她要做C拜的日子:她在英国受洗了!我以前也从来没有见识q基督教做礼拜的场景Q所以跟呆子_也想看看。我到富阳的时候他们的仪式已经开始了Q我到的时候,上面是长老在做报告类似的Q因得是富阳话,我不大听得懂Q不q这个很快也q束了Q大概是在我来之前已l讲了很久了:-PQ。然后,他们开始唱圣歌Q唱了很多,我个人感觉那个旋律还不错Q也很容易上口,也跟着׃几首。圣歌中都是些赞颂耶稣Q赞颂主的,也有一些是说希望主不要摒弃他们的,q有是希望L留他们。呆子,一直都在非常虔诚的唱,而且每次低头告的时候都非常虔诚Q我作ؓ外hQ自然体会不到其中的滋味Q。唱完圣歌,q后是讲了一D圣l上的内容,我们四个人,除了呆子Q其他的都没有认真的在听Q所以也不知道具体地讲了些什么。不q我听到一个故事印象非常深刻:有一对夫妻,d是基督徒。故事就讲到那个丈夫Q如果打他妻子,她绝对不会还手,而且q是W脸相迎Q?q个也许是常说的那个故事:如果有h打你左脸Q你要把双让他打!q个C拜好像q有圣餐Q不q呆子说我们没有受洗q,不能接受的!
后来Q也跟呆子聊了很多。也大致了解了基督教的一些东ѝ她也说她自己变了很多,在英国最重要的事是扑ֈ了自q丅R在我看来她在英国最重要的的是扑ֈ了自q主,扑ֈ了自׃生的寄托?/p>
我从来不会觉得因为有宗教信ԒQ呆子就是另cM。在我看来呆子还是呆子,唯独变的只是ҎC一个可以倾诉的对象!

]]>- ?NET设计规范?amp;mdash;—学习W记Q?.2Q低门栏原则http://m.tkk7.com/adaiye/archive/2007/09/03/142204.htmladaiyeadaiyeMon, 03 Sep 2007 02:03:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/03/142204.htmlhttp://m.tkk7.com/adaiye/comments/142204.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/03/142204.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/142204.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142204.html阅读全文

]]> - JavaE序员需要了解的几个开源协?/title>http://m.tkk7.com/adaiye/archive/2007/09/02/142137.htmladaiyeadaiyeSun, 02 Sep 2007 13:48:00 GMThttp://m.tkk7.com/adaiye/archive/2007/09/02/142137.htmlhttp://m.tkk7.com/adaiye/comments/142137.htmlhttp://m.tkk7.com/adaiye/archive/2007/09/02/142137.html#Feedback1http://m.tkk7.com/adaiye/comments/commentRss/142137.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/142137.html阅读全文

]]> - q接数据库和相关数据库操作——之我的Ҏ 利用OLEDBhttp://m.tkk7.com/adaiye/archive/2007/08/31/141689.htmladaiyeadaiyeFri, 31 Aug 2007 04:25:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/31/141689.htmlhttp://m.tkk7.com/adaiye/comments/141689.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/31/141689.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/141689.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/141689.html阅读全文

]]> - 一位Y件工E师?qȝQ{Q?/title>http://m.tkk7.com/adaiye/archive/2007/08/31/141677.htmladaiyeadaiyeFri, 31 Aug 2007 03:51:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/31/141677.htmlhttp://m.tkk7.com/adaiye/comments/141677.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/31/141677.html#Feedback3http://m.tkk7.com/adaiye/comments/commentRss/141677.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/141677.html
作者:成晓?
“?
是一q毕业时”Q看CҎ学子d人生的象牙塔Q走上各自的工作岗位Q想惌׃曄意气风发、踌w满志,不觉感叹万千……本文是自己工?q的l历?
淀或者经验提|希望Ҏ有的软g工程师们有所帮助Q早日实现自q人生目标。本文主要是关于软g开发h员如何提高自q软g专业技术方面的具体Q前
面几Ҏ在确定大的方向,是废话吧?
谨以此文献给那个自己Z奉献3q青春与Ȁ情的开发团队。还有团队成员:PPL、YT、YK 、TYF、LGL、CHL、CDY、CB、DPD?
1?
分nW一条经验:“学历代表q去、能力代表现在、学习力代表未来?#8221;其实q是一个来自国外教育领域的一个研I结果。相信工作过几年、十几年的朋友对q个?
理有些体会吧。但我相信这一点也很重要:“重要的道理明白太晚将抱憾l生Q?#8221;所以放在每一条,让刚刚毕业的朋友们早点看到哈Q?
2?
一定要定自己的发展方向,qؓ此目的制定可行的计划。不要说什么,“我刚毕业Q还不知道将来可能做什么?”Q?#8220;跟着感觉赎ͼ先做做看”。因为,q样的观
点会通过你的潜意识去暗示你的行ؓ无所事事、碌无为。一直做技术,来成ؓ专家Uh物?向管理方向走Q成业经理hQ先熟悉行业和领域,来自立?
Pq是先在行业里面hQ过几年转行做点别的Q这很重要,它将军_你近几年、十q内“做什么事情才是在做正的事情Q?#8221;?
3?
软g开发团队中Q技术不是万能的Q但没有技术是万万不能的!在技术型团队中,技术与人品同等重要Q当焉怹比较重要哈,其在MM比较多的团队中。在?
仉目团队中Q技术水qx受h重视和尊重的重要砝码。无Z是做理、系l分析、设计、编码,q是产品理、测试、文、实施、维护,多少你都要有技术基
。算我孤陋寡闻,我还真没有亲眼看到过一个外行带领一个Y件开发团队成功地完成qY件开发项目,哪怕就一个,也没有看到。倒是曄看到q一?#8220;高学历的
牛h”(非技术型)带一堆h做完q一个项目,目交付的第二天Q项目组成员扔下一?#8220;再也受不了啦Q?#8221;四分五裂、各奔东ѝ那个项目的“成功?#8221;大家可想
而知了?
4?
详细制定自己软g开发专业知识学习计划,q注意及时修正和调整(软g开发技术变化实在太?。请牢记Q?#8220;如果一个Y件开发h员在1?q内都没有更新过?
q知识Q那么,其实他已l不再属于这个行业了?#8221;不要告诉自己没有旉。来自时间管理领域的著名?#8220;三八原则”告诫我们Q另外的?时如何使用决?
你的人生成|Q本毕业以来Q^均每天实际学习时间超q?时?
5?
书籍是hc进步的阶梯Q对软g开发h员尤其如此。书c是学习知识的最有效途径Q不要过多地指望在工作中能遇?#8220;世外高h”Qƈ不厌其烦地教你。对于花׃
书,我个人经验是Q千万别买国内那帮h出的书!我买的那些家伙出的书Q?00%全部后悔了,无一本例外。更气愤的是Q这些书在二手市场的地摊上都很难?
掉?#8220;拥有书籍q不表示拥有知识Q拥有知识ƈ不表C拥有技能;拥有技能ƈ不表C拥有文化;拥有文化q不表示拥有智慧?#8221;只有书本变成的自己智慧Q才是
真正拥有了它?
6?
不要仅局限于ҎҎ术的表面使用上,哪怕你只是偶尔用一、二ơ?#8220;对Q何事物不I就?#8221;是Q何行业的工程师所不应该具备的素质。开发Windows应用
E序Q看看WindowsE序的设计、加载、执行原理,分析一下PE文g格式Q试试用SDK开发从头开发一个Windows应用E序Q用VCQ+?
Delphi、Java?Net开发应用程序,花时间去研究一下MFC、VCL、J2EE?Net它们框架设计或者源码;除了会用J2EE?
JBoss、Spring、Hibernate{等优秀的开源品或者框Ӟ抽空看看大师们是如何抽象、分析、设计和实现那些cM问题的通用解决Ҏ的?
试着q样做做Q你以后的工作将会少遇到一些让你不明就里、一头雾水的问题Q因为,很多东西?#8220;知其然且知其所以然”Q?
7?
在一U语a上编E,但别为其束缚了思想?#8220;代码大全”中说Q?#8220;深入一门语a~程Q不要Q于表?#8221;。深入一门语a开发还q远不QQ何编E语a的存在都有其
自n的理由,所以也没有哪门语言?#8220;包治癄”?#8220;灵丹妙药”。编E语a对开发h员解军_体问题的思\和方式的影响与束~的例子俯拾皆是。我的经验是Q用
面对对象工具开发某些关键模块时Qؓ什么不可以借鉴C、C51、汇~的模块化封装方式?用传l的桌面开发工?目前主要有VC++、Delphi)q行p?
l体l结构设计时Qؓ什么不可以参考来自JavaC的IoC、AOP设计思想Q甚臛_鉴像Spring、Hibernate、JBoss{等优秀的开?
框架Q在q行cM于实旉信、数据采集等功能的设计、实现时Qؓ什么不可以引用来自实时pȝ、嵌入式pȝ的优U的体pL架与模式Qؓ什么一切都必须以个
人、团队在当然开发语a上的传统或者经验来解决问题Q?Q?#8220;他山之石、可以攻?#8221;?
8?
Lȝ与反思的习惯Qƈ有意识地提炼日常工作成果QŞ成自q个h源码库、解xc问题的通用pȝ体系l构、甚臌化ؓ框架。众所周知Q对软g开发h?
而言Q有、无l验的一个显著区别是Q无l验者完成Q何Q务时都从头开始,而有l验者往往通过重组自己的可复用模块、类库来解决问题Q其实这个结Z应该?
局限在软g开发领域、可以g伸到很多斚wQ。这q不是说Q所有可复用的东襉K必须自己实现Q别人成熟的通过试的成果也可以攉、整理、集成到自己的知?
库中。但是,最好还是自己实玎ͼq样没有知识产权、版权等问题Q关键是自己实现后能真正掌握q个知识点,拥有q个技能?
9?
理论与实践ƈ重,内外双修。工E师的内涉|Q以工程师的眼光观察、分析事物和世界。一个合格的软g工程师,是真正理解了软g产品的本质及软g产品研发的?
想精髓的人(个h观点、欢q探讨)。掌握Y件开发语a、应用语a工具解决工作中的具体问题、完成目标Q务是软g工程师的主要工作Q但从Y件工E师q个角度
来看Q这只是外在的东西,q重要的、本质的工作。学习、掌握Y件品开发理论知识、Y件开发方法论Qƈ在实践中理解、应用Y件品的分析、设计、实现?
x解决具体的Y件品研发问题,才是真正的Y件工E师的工作。站在成熟理Z可靠Ҏ论的高度思考、分析、解决问题,q在具体实践中验证和修正q些思想
与方式,最lŞ成自q理论体系和实用方法论?
10、心态有多开放,视野有多开阔。不要抱着自己的技术和成果Q等到它们都已经q时
变成垃圾了,才拿出来丢h现眼。请及时发布自己的研I成果:开发的产品、有创意的设计或代码Q公布出来让大家交流或者用,你的成果才有q化和升华的?
会。想惌?000q间开发的那些Windowspȝ工具Q??q之后的今天Q还是那个样子,今天行的好多Windowspȝ工具都比自己的晚Q但
q化得很好,且有那么多用户在使用。ƈ且,不要保守自己的技术和思想Q尽可能CZ与分nQ或者传授给开发团队的成员?#8220;与h交换Ҏ之后Q每个hq?
是只有一个苹果;但交换思想之后Q每个h都拥有两U思想”Q道理大安懂,但有多少人真正能做到呢?
11、尽量参加开源项目的开发?
或者与朋友共同研制一些自q产品Q千万不要因为没有钱赚而不做。网l早已不再只?#8220;虚拟世界”Q网上有很多的开源项目、合作开发项目、外包项目,q都?
涉猎工作以外的知识的l好ZQƈ且能够结识更q的人缘。不要因为工作是做ERPQ就不去学习和了解嵌入式、实时、通信、网l等斚w的技术,反过来也是一
栗如果当他别人拿着合同找你合作Q你却这也不会,那也不熟Ӟ你将后悔莫及?
12、书到用时方恨少Q不要将自己的知识面仅仅局限于
技术方面。诺贝尔l济学奖得主西蒙教授的研I结果表明:
“对于一个有一定基的h来说Q他只要真正肯下功夫Q在6个月内就可以掌握M一门学问?#8221;教育心理学界为感谢西蒙教授的研究成果Q故命名蒙学习法?
可见Q掌握一门陌生的学问q远没有x的那么高难、深奥。多方吸取、广泛涉猎。极力夯实自q影响圈、尽量扩大自qx圈。胦务、经、税务、管理等{?
知识Q有I旉看看Q韬光养晦、未雨绸~?
13、本文的ȝ与反思:
AQ不要去做技术上的高手,除非你的目标如此。虽然本文是关于提高软g开发知识的Q做技术的高手是我一向都不赞同的。你可以提高自己的专业知识,但能胜Q工作x?
BQ提高Y件知识和技术只是问题的表面Q本质是要提高自p识问题、分析问题、解决问题的思想高度。Y件专业知识的很多Ҏ和原理,可以很容易地延、应用到生活的其它方面?
CQ在能胜d作的基础上,立即L猎其它领域的专业知识Q丰富自q知识体系、提高自ql合素质Q尤其是那些目标不在技术方面的朋友?a href="http://m.tkk7.com/adaiye/">adaiye

]]> - ?NET设计规范?amp;mdash;—学习W记Q?Q框架设计的基本原则http://m.tkk7.com/adaiye/archive/2007/08/29/141014.htmladaiyeadaiyeWed, 29 Aug 2007 09:34:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/29/141014.htmlhttp://m.tkk7.com/adaiye/comments/141014.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/29/141014.html#Feedback0http://m.tkk7.com/adaiye/comments/commentRss/141014.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/141014.html׃我怕文章的幅q长会人看了头痛,所以,我打分几篇文章把?NET设计规范》第二章的学习笔记写出来Q这样大家看着不至于太累!大概是接下去d五篇文章是说“框架设计基”的......
?/strong>用户而言Q真正的开发效率来自能够轻易地创造出非凡的品,而ƈ非来自能够轻易地创造垃圾?/h3> 场景驱动设计的原?/font>
框架通常包含非常大的一lAPI。但在开发过E中Q真正用到的只是其中较小的一个子集,只会涉及一部分常用场景?/p>
在设计框架时Q用场景来驱动。从用户的角度,先自q写一些对主要场景来说必不可少的代码,然后再设计对象模型(object modelQ来支持q些样例代码?/p>
于功能性规范之前,先撰写一份场景驱动的API规范Q应该列Z个给定的技术领域中最常用??0个用场景,q列出实现这些场景的样例代码Q至用两种语言~写?/p>
- 要确保对M包含公用API的特性设计来_其核心部分都是API设计规范?/li>
- 要ؓ每个主要的特性域Qfeature areaQ定义一些最常用的场景?/li>
- 要确保用场景与适当的抽象层ơ相对应。场景应该大致与最l用L用例相对应?/li>
- 先ؓ主要的用场景编写样例代码,然后再定义对象模型来支持q些样例代码?/li>
- 要用臛_两种不同的编E语a来ؓ主要场景~写样例代码?br>最好能保证所选编E语a的语法和风格差异很大?/li>
- 不要在设计框架的公用API时完全依赖于标准的设计方法?br>标准的设计方法(包括面向对象的方法)是ؓ了设计的具体实现容易维护,而不是ؓ了得到的API易于使用?br>以场景驱动设计ؓ主,辅以原型制作、可用性研I以及一定数量的q代Q这U方法要比标准的设计Ҏ好得多?br>可用性研I是Z定开发h员真正的需求。这跟需求获取一P设计师此时化wؓ一名需求分析师Q而开发h员则变成了客戗需求分析师不能惛_然的认ؓ客户的真正需求是什么,一定要通过跟客户交才行,站在客户的角度考虑问题。跟需求获取类|可用性研I宜早不宜迟?/li>
- 要安排可用性研I来试用于主要场景的API?br>如果开发h员在Z要场景编写代码时Q遇到较大问题,则说明API需要重新设计。在原有API的基上修改,开销反而大Q而且是很大?/li>

]]>
- ?NET设计规范》——学习笔讎ͼ1Q?/title>http://m.tkk7.com/adaiye/archive/2007/08/28/140588.htmladaiyeadaiyeTue, 28 Aug 2007 08:56:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/28/140588.htmlhttp://m.tkk7.com/adaiye/comments/140588.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/28/140588.html#Feedback3http://m.tkk7.com/adaiye/comments/commentRss/140588.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/140588.html阅读全文

]]> - java垃圾攉法(?http://m.tkk7.com/adaiye/archive/2007/08/27/140121.htmladaiyeadaiyeMon, 27 Aug 2007 12:35:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/27/140121.htmlhttp://m.tkk7.com/adaiye/comments/140121.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/27/140121.html#Feedback4http://m.tkk7.com/adaiye/comments/commentRss/140121.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/140121.html阅读全文

]]> - 接口和抽象类的定义方式D例说??http://m.tkk7.com/adaiye/archive/2007/08/26/139652.htmladaiyeadaiyeSun, 26 Aug 2007 14:59:00 GMThttp://m.tkk7.com/adaiye/archive/2007/08/26/139652.htmlhttp://m.tkk7.com/adaiye/comments/139652.htmlhttp://m.tkk7.com/adaiye/archive/2007/08/26/139652.html#Feedback2http://m.tkk7.com/adaiye/comments/commentRss/139652.htmlhttp://m.tkk7.com/adaiye/services/trackbacks/139652.html本位转自中国IT实验?/p>
原文地址Q?a target="_blank">接口和抽象类的定义方式D例说?/font>
接口定义
关于java的接口定义方式,以下三种情况下可以采用接口定义方式:
1. 接口中声明的变量全部为final 和staticcd的,q且q个接口的作用在于定义一些g能改变的变量?br>举个例子Q?br>public interface ObjectConstants{
public static final String SPACE = new String(" ");
public static final char FORMFEED = '\f';
}
2. 接口中只定义可供实现的抽象方?br>EventListener.java
public interface EventListener {
public void handleEvent(Event evt);
}
Runnable.java
package java.lang;
public interface Runnable {
public abstract void run();
}
3. q有一U方式是上述两种方式的组合,如非必要一般会这样一个接口定义拆分成两个接口定义
抽象cȝ定义
1. 如果一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成abstract?br>例如InputStream.javacȝ定义方式Q?br>package java.io;
public abstract class InputStream implements Closeable {
// SKIP_BUFFER_SIZE is used to determine the size of skipBuffer
private static final int SKIP_BUFFER_SIZE = 2048;
// skipBuffer is initialized in skip(long), if needed.
private static byte[] skipBuffer;
public abstract int read() throws IOException;
public int read(byte b[]) throws IOException {
return read(b, 0, b.length);
}
public int read(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return 0;
}
int c = read();
if (c == -1) {
return -1;
}
b[off] = (byte)c;
int i = 1;
try {
for (; i < len ; i++) {
c = read();
if (c == -1) {
break;
}
if (b != null) {
b[off + i] = (byte)c;
}
}
} catch (IOException ee) {
}
return i;
}
public long skip(long n) throws IOException {
long remaining = n;
int nr;
if (skipBuffer == null)
skipBuffer = new byte[SKIP_BUFFER_SIZE];
byte[] localSkipBuffer = skipBuffer;
if (n <= 0) {
return 0;
}
while (remaining > 0) {
nr = read(localSkipBuffer, 0,
(int) Math.min(SKIP_BUFFER_SIZE, remaining));
if (nr < 0) {
break;
}
remaining -= nr;
}
return n - remaining;
}
public int available() throws IOException {
return 0;
}
public void close() throws IOException {}
public synchronized void mark(int readlimit) {}
public synchronized void reset() throws IOException {
throw new IOException("mark/reset not supported");
}
public boolean markSupported() {
return false;
}
}
2. 抽象cȝҎ体中只定义抽象的ҎQ例如AbstractMethodError.java
package java.lang;
public class AbstractMethodError extends IncompatibleClassChangeError {
public AbstractMethodError() {
super();}
public AbstractMethodError(String s) {
super(s); }
}

]]>
վ֩ģ壺
vavavaþ|
ĻƷѾþӰԺ|
˳߲վ|
ֳִˬֳƵ|
߹ۿëƬ|
˾ƷۺƵ|
Ʒھþ|
þùһƬѹۿ|
ɫþþ99Ʒ|
þֻƷ99re|
Ʒ|
뾫ƷAVӰ|
AVվ߹ۿ|
131ŮƵ|
һƬƵ|
ƷƬþ|
4444wwwѿ|
va|
ŮѹۿƬ|
ȫAһëƬ|
ۺƷ|
߹ۿѲ|
gvh߹ۿ|
պƷһ|
Ӱɫۺ|
ޱAAAר|
۵Ӱ߹ۿ|
ɫͷվ|
ϸëƬ|
gvС߹ۿ|
Ů߾Ʒѹۿ|
߹ۿ91|
þþ뾫ƷպĦ
|
ůůƵƵ|
պ˳|
ƷƷŮѹۿ|
ԴԴѹۿ|
ۺŷɫ°Ҳȥ|
Ļһ|
þùƵ|
㽶Ƶѿ|