什么叫水平,不是看懂了叫水平,也不是会用了就叫水平,更不是懂得更多才叫有水平,而是知道如何做才能做得更好才叫真正有水平?...
?? 其實(shí)有很多同事、朋友、同行,水平個(gè)個(gè)都很強(qiáng)的,寫程序也很快,但是他們有一個(gè)共同的缺點(diǎn),就是懂得太多、想法太多、想做得太多但是仔細(xì)認(rèn)真做得太少、做得精的太少、經(jīng)得起考驗(yàn)的更少、真正可以實(shí)際應(yīng)用可以廣泛推廣的就更少。
?? 很多人都喜歡大談SOA、IOC、ORM等等,但是對手上的眼前的程序代碼卻沒有多少興趣愛好,也懶得深入研究優(yōu)化自己的程序,這幾年深刻的意識到,眼前的才是真,真正在用的程序才是真,其他都是虛假飄渺的,把給客戶用的實(shí)實(shí)在在的程序?qū)懙米詈谩⑿阅茏詈?#xff0c;用起來好用,符合客戶的實(shí)際需求才是真理。
??
?? 打個(gè)比方,曾經(jīng)我寫了一個(gè)函數(shù),一直用得蠻好的,自己認(rèn)為已經(jīng)寫得非常好了,同事們也沒在其中找出來過多少Bug,我們在日常開發(fā)中天天也在用,所以我想把這個(gè)類發(fā)布給大家用用,提高一下大家的品質(zhì),發(fā)布到網(wǎng)絡(luò)上后,很多人有下載,也有人在用,也有人反饋過錯(cuò)誤,但是其中我很佩服一個(gè)人“盧騏征”,這個(gè)人應(yīng)該是仔細(xì)看了我的代碼,然后給我指出:“吉日,你的代碼還可以優(yōu)化,有一個(gè)地方你可以這么改進(jìn)一下......”。
?? 我太佩服這樣的人了,我不是想跟別人大談什么這個(gè)牛B技術(shù)、那個(gè)牛B技術(shù),我就想實(shí)實(shí)在在知道,我的程序還有什么問題,哪里還可以怎么改進(jìn)?如何寫代碼才更好用,更好讀,別人用起來更方便?
?
?? 例如我寫的一個(gè)獲得參數(shù)的函數(shù):
代碼 ?1?????????#region?public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)?2?????????///?<summary>
?3?????????///?獲取參數(shù)
?4?????????///?</summary>
?5?????????///?<param?name="targetFiled">目標(biāo)字段</param>
?6?????????///?<param?name="targetValue">值</param>
?7?????????///?<returns>參數(shù)</returns>
?8?????????public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)
?9?????????{
10?????????????SqlParameter?dbParameter?=?null;
11?????????????//?dbParameter?=?new?SqlParameter("@"?+?targetFiled,?targetValue);
12?????????????if?(targetValue?==?null)
13?????????????{
14?????????????????return?dbParameter;
15?????????????}
16?????????????if?(targetValue?is?String)
17?????????????{
18?????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.VarChar);
19?????????????}
20?????????????else
21?????????????{
22?????????????????if?(targetValue?is?Boolean)
23?????????????????{
24?????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.Bit);
25?????????????????}
26?????????????????else
27?????????????????{
28?????????????????????if?(targetValue?is?DateTime)
29?????????????????????{
30?????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.DateTime);
31?????????????????????}
32?????????????????????else
33?????????????????????{
34?????????????????????????if?(targetValue?is?int)
35?????????????????????????{
36?????????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.Int);
37?????????????????????????}
38?????????????????????????else
39?????????????????????????{
40?????????????????????????????if?(targetValue?is?Int64)
41?????????????????????????????{
42?????????????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.BigInt);
43?????????????????????????????}
44?????????????????????????????else
45?????????????????????????????{
46?????????????????????????????????if?(targetValue?is?Double)
47?????????????????????????????????{
48?????????????????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.Decimal);
49?????????????????????????????????}
50?????????????????????????????????else
51?????????????????????????????????{
52?????????????????????????????????????if?(targetValue?is?Byte[])
53?????????????????????????????????????{
54?????????????????????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.Binary);
55?????????????????????????????????????}
56?????????????????????????????????????else
57?????????????????????????????????????{
58?????????????????????????????????????????dbParameter?=?new?SqlParameter("@"?+?targetFiled,?SqlDbType.VarChar);
59?????????????????????????????????????}
60?????????????????????????????????}
61?????????????????????????????}
62?????????????????????????}
63?????????????????????}
64?????????????????}
65?????????????}
66?????????????dbParameter.Value?=?targetValue;
67?????????????return?dbParameter;
68?????????}
69?????????#endregion
?? 當(dāng)時(shí)也費(fèi)了不少周折,把這個(gè)函數(shù)寫好,大家用用也很好用,但是我發(fā)布到網(wǎng)上后,人家(“盧騏征”)有水平的人就說了,這個(gè)可以改進(jìn)優(yōu)化,沒必要寫這么長,這就叫做水平,牛X啊,我佩服。
?? 不是把程序?qū)懗鰜砹?#xff0c;就叫厲害了,更厲害的是如何寫才是最好、性能更高,更好用、更簡潔,我按他的指導(dǎo)意思改進(jìn)了程序的寫法,變成了如下幾行代碼。
代碼 ?1?????????#region?public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)?2?????????///?<summary>
?3?????????///?獲取參數(shù)
?4?????????///?</summary>
?5?????????///?<param?name="targetFiled">目標(biāo)字段</param>
?6?????????///?<param?name="targetValue">值</param>
?7?????????///?<returns>參數(shù)</returns>
?8?????????public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)
?9?????????{
10?????????????SqlParameter?dbParameter?=?new?SqlParameter("@"?+?targetFiled,?targetValue);
11?????????????dbParameter.Value?=?targetValue;
12?????????????return?dbParameter;
13?????????}
14?????????#endregion
?? 以前寫的幾十行代碼,只變成了3行代碼就可以了,過了一夜,我再想想很有可能,其中的兩行代碼也是多余的,應(yīng)該是寫一行代碼就可以了,先做一個(gè)測試,改進(jìn)后的代碼是:
代碼 ?1?????????#region?public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)?2?????????///?<summary>
?3?????????///?獲取參數(shù)
?4?????????///?</summary>
?5?????????///?<param?name="targetFiled">目標(biāo)字段</param>
?6?????????///?<param?name="targetValue">值</param>
?7?????????///?<returns>參數(shù)</returns>
?8?????????public?DbParameter?MakeInParam(String?targetFiled,?Object?targetValue)
?9?????????{
10?????????????return?new?SqlParameter("@"?+?targetFiled,?targetValue);
11?????????}
12?????????#endregion
?? 哎呀,幾十行的代碼,用得也很穩(wěn)定的代碼,其實(shí)就寫一行代碼就可以了,這就叫真水平,讓別人也看看自己的代碼,檢查檢查,不是自己覺得好了就是真好,別人都說好才是好,心理舒坦了很多,優(yōu)化了代碼,也感謝盧騏征的指點(diǎn)。
?
?? 雖然他半年前就告訴我問題在哪里了,我也沒馬上修改,因?yàn)檫€需要考慮穩(wěn)定性,自己是否有空有精力去修改,這幾天正好心情好,把半年前人家提供的改進(jìn)好了,心理也好舒坦。
?? 很多改進(jìn)未必是當(dāng)場就改進(jìn),但是覺得應(yīng)該這么改是對的,那就早晚會修正好,問題畢竟還需要按輕重緩急的順序來一個(gè)個(gè)解決。
?
???實(shí)實(shí)在在的水平就在于:“請告訴我,我應(yīng)該怎么做才能做得更好,我的程序哪里有問題?如何改進(jìn)?怎么寫才是更好的?”,不要告訴我,去看RBAC吧,CMMI吧,請給我明確的指點(diǎn),我不是神,你說個(gè)ISO、PMP什么的,我是根本不懂的我自己也學(xué)不了,沒那個(gè)水平。
?
?
?
總結(jié)
以上是生活随笔為你收集整理的什么叫水平,不是看懂了叫水平,也不是会用了就叫水平,更不是懂得更多才叫有水平,而是知道如何做才能做得更好才叫真正有水平?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KCNA考试 第五章:kubernete
- 下一篇: 各种编码格式(GB2312,GBK,GB