摘要:[原則問題?] 100%用上ASP.NET控制項,才是真正的ASP.NET網頁?
原則問題? 100%用上ASP.NET控制項,才是真正的ASP.NET網頁?
這是我上課有時會講的例子
剛好看見論壇有人討論類似的問題
**************************************************************************
以下是我個人想法,或是說我們團隊的共識。不見得一定適合您
***************************************************************************
有個朋友想要設計跟微軟msdn網站一樣的架構
例如:
上方 是公司大標題
左邊 有樹狀圖(TreeView / 菜單等等)
右邊 的網頁是「主要內容」。
當然,他用了ASP.NET的主版頁面(MasterPage)
但是用了以後,發現有些問題或是某些網頁內的控制項更不好操作?
例如,你要用更多的 .FindControl()方法,一層一層挖下去....
這篇文章的解法很好,請大家參考:
您也可以發現:在我的書本裡面,上集我沒有介紹 Login控制項、導覽列、MasterPage
我把他們放在下集才講。
因為我認為:看完上集的技巧(夠熟練!能變通!)您可以自己寫出「下集」那些範例
上述三種控制項,我都有替代方法能作(或許我比較懶惰吧?我懶得學新東西)
但我想說的重點是:
第一,不要看了人家的成果(畫面),去反推(猜測)對方是怎麼湊出來的?
然後「硬用」ASP.NET控制項去湊?
舉例來說,相同的畫面(動態產生問卷、產生表單),我可以用 Panel做(障眼法,但客戶也覺得OK)
我也有能力用PlaceHolder完成,真正的在程式執行期間,動態加入控制項(範例已經收納在書本下集)
但....客戶瞭解嗎?用了深入的技術,老闆會給我加薪嗎?
日後出了問題,接手的人要花多少時間去改?
我現在考慮的問題,會比較多(可能我不是現役Programmer,我現在最擔心 專案進度 與 人力銜接 的問題.....)
......,反正拿 "最高級" 的技術,然後通通都用在這個程式上就對了。經過三個月的血與淚,總算是完成了。嘿!成果還真的不錯,用過的人都滿意的啦 (其實只有同部門的工程師在用而已,不到十個人...)。而且還是用 "高級" 的技術做出來的喔!我的鼻子頓時又高了不少。現在想想那時還真是天真哩。是的,用到的技術很新很辣,但是以維護的角度來看,根本是個惡夢,一個工程上的失敗品。
第二,並非.....100%用光了(全用上) ASP.NET控制項,才是「真正」的ASP.NET網頁。
舉例來說,我們公司的系統畫面,
左邊的樹狀結構(菜單 / TreeView)仍是以前用 JavaScript寫出來的
右邊的主畫面,仍是用傳統HTML網頁的頁框(frameset)來呈現畫面
為什麼要這麼做呢?
因為其他的案子,PHP或舊版ASP網頁,都這樣用。保持一致性的話,出了問題,很多人都熟悉能改。
另外,我們的系統從來沒用過 Login控制項,因為有一份共用的會員資料庫(存放帳號、密碼的地方),所有網站都使用相同架構
所以仍以 Session來管理會員登入、權限
(你說我食古不化也行.....因為這不是我規定的,有點約定俗成)
面對不同情況的時候,有不同的變化
時間緊迫的時候,常常改了就上線。
沒有時間加入新技術、或是去用「不熟悉」的新控制項
因為客戶的上線期限(Dead Line)絕對不會後退一步
除了技術的新舊以外,「滿足客戶需求」對我們團隊來說,會更重要。
因為這代表可以結案、收到貨款。
我最不能忍受的是這種人:
今天下午五點要寫完(你也認列了、確定可以交付),但時間到了,寫不出來。
當初評估的結果,這不難,所以把時間壓在今天下午五點。
時間到了,卻沒交!無法給客戶測試
原因呢?「我會寫,也寫得出來。.....但我覺得這方法很蠢,我不想用這方法」
「我想用全新的XX控制項來做,所以還沒寫好。.....如果用以前的作法,我早就交了」
一兩次,我還會客氣地說,你很認真!那要趕緊做完,不要拖下去
次數多了,各位看官會怎麼想?
我只看到你 Delay、重複 Delay.....................
把情況改一下,那就不一樣。
您先完成了工作,準時交付。客戶驗收與測試都OK。
但您發現有些地方可以改進,也花時間去改進
或是發現新技術、新控制項很讚! 後續改了、添加進去....果然更棒!
然後您推廣這技術,讓(團隊)大家都會用....
不得了!這樣的人,我一定要大力讚揚,請老闆表揚與加薪的!
這絕對是大家學習的模範,絕對是公司死命保留的關鍵人才!
懂了嗎?不同的情況下,有不同的作法
要研究、要表現自己、要精進技術....都是自己的努力、自己的時間
不能以此為藉口,拖累大家。
甚至連自己「分內的工作」都交不出來
有限的時間內,如何達到自己、團隊、客戶三者的最佳平衡?最大滿意度?
是很重要的事情
想通了,海闊天空(技術,為我所用!)
想不開,就是鑽牛角尖(技術,困死自己)
這些抉擇 沒 有 對 錯。
不同的選擇,造就不同的結果
不過要提醒您:「時間」從來不等人,
......不管是自己年輕時的 "學習"時間,或是 "專案結束"的時間
**************************************************************************
以上是我個人想法,或是說我們團隊的共識。不見得一定適合您
***************************************************************************
我想跟初學者(新手、菜鳥)說:
您可以把 100%的 ASP.NET控制項全部學會,然才上場作戰。
也可以只會最關鍵的 20%,然後做出 80%功能(這就是著名的「20 / 80」法則)
「邊學邊作、逐步成長」會是比較平順的作法,而且實力養成會比較扎實
但一個初學者,面對一項需求,
如果常常覺得「這一定是我哪個控制項不會用,所以做不出來」
我想:您應該永遠都是菜鳥
如果有一名廚師,面對新的菜色,永遠只想到「我一定忘了加哪個"現成的"調味料,所以做不出來」
而不是用現有的技術、食材、加一點巧思去實作它?
我想這種廚師,只能去連鎖店上班。
A菜色 就是 A原料+A醬汁(公司調好的),我只是混在一起下鍋煮熟
事實上,很多連鎖餐廳的新手廚師(因為薪資便宜)都是這樣的水準。
***************************************************************************
雖然我們團隊愛用舊技術(偷懶、或是容易找人維護)
但也可能犯了下面的錯誤,
這個小故事說明了「約定俗成」也會是錯誤:
媳婦煎魚時,習慣把頭尾去掉(切掉)
婆婆問:為什麼要這樣呢?
媳婦說:我不知道,我看我媽媽都這樣做
回娘家問了媽媽,媽媽也說是跟我媽媽(外婆)學的
又去找了外婆問清楚
外婆笑了,說:「以前的鍋子小,所以煎一條魚要把頭尾去掉.............你們現在應該不會這樣做吧?」
講的有點離題............
反正變化改不上計畫
原則...也常常會變動啊
看到這裡,您對於「100%用上ASP.NET控制項,才是真正的ASP.NET網頁」的感覺是什麼呢?
職場有趣的地方,就是隨時有新鮮事
到了最後,真正讓我有價值的,往往是我想不到的「經驗談」
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................