熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

精彩小技巧:ASP遺留的二十大積習

2022-06-13   來源: .NET編程 

  在技術更新的進程中 仍然有一些人死抱著已經過了氣的東西不放 也有一些人雖然進入到新的世界 但仍擺脫不了陳舊的習慣 我沒有用陋習這個詞 因為我對這個詞也非常反感
  
  新技術應該有新技術的做法 進入ASPNET的世界 就應該把以往的習慣改正 全新的進入新的世界 把ASP的破爛扔掉
  
  以下列舉的都是錯誤的做法 請不要誤以為是推薦的做法而進行推廣:
  
   使用server side include給ASPX引入共同的頁面構圖
  在ASPNET的機制下 應使用ASCX(web user control)來實現 ASCX提供了更多可控制接口 並且更重要的是 ASCX是一個類 一個實實在在的類 可以全面控制它
  
  不使用nfig
  nfig提供了非常豐富的配置管理接口 是一個應用程序最核心的部分 但是很多人的nfig往往是空的 或者就從來沒有修改過
  
  使用ResponseWrite向前端輸出消息
  ASPNET平台下的Response和ASP的Response有很大的不同 雖然表示同一含義 但用法上已經大不相同 ResponseWrite的內容只會輸出到頁的最前端 向前端輸出消息的正確方法是使用PlaceHolder
  
  使用一系列session管理用戶連接狀態
  這種方法在ASP裡被濫用 在ASPNET環境下 正確的做法應該是設計一個類 結構化地保存數據 將對session或者cookie的訪問封裝起來
  
  使用session驗證身份
  這幾乎是通病 ASPNET提供了一組用於用戶身份驗證的API 類型是forms驗證或者windows驗證 這一點quick start有一節講解得很清楚 可以絕大部分人還是依靠給session賦值來保持用戶身份驗證狀態
  
  使用ResponseRedirect重定向頁
  這一點在必要的時候可以使用 但不可濫用 事實證明濫用重定向將導致邏輯上的嚴重混亂 這是在以頁為程序單元的時候的做法 使用front controller模式將使用戶的操作邏輯集中起來]
  
  使用太多ASPX頁
  ASP環境下的程序單元只有*asp頁 ASPNET可不是這樣 還有後端的類庫 ASCX等等 應將業務邏輯分別集中在不同的單元 而不應該一項操作使用一個ASPX 更多時候ASPX將做為ASCX或者custom control的容器而管理頁內邏輯 ASPX重用ASCX的同時 ASPX也做為統一的頁構圖重用
  
  在多個邏輯單元之間復制代碼並修改相應邏輯
  重用 重用 重用 處理此類問題的原則是不出現任何相同或相似的過程 如果你用上面的方法 一旦出現重大邏輯更改 帶來的結果將是災難性的
  
  害怕使用DataSet
  很多人被DataSet嚇壞了 認為肯定影響性能 但連最初的嘗試都不敢 他們總認為他們的產品一定重大 設計上應該慎重 他們往往使用ArrayList或者設計低級的類來保存集合數據 進行艱難的數據倒入工作
  
  性能過多注意
  對ASPNET ViewState的機制特別不滿 或者總是挖空心思迫害人家 反倒把自己弄得很累 如果在對付ViewState的同時多注意少連幾次數據庫也許更文明些
  
  應用程序根目錄很亂
  ASPNET是開發項目 不是網站 應該把不同的資源分類放置 例如把所有靜態資源(樣式表 腳本 圖像)組織到一起 甚至可以寫一組API來管理他們 ASPX應該放在一起 ASCX應該放在一起 *cs呢? 應該把他們放到另外一個project裡
  
  不厭其煩的寫訪問數據庫的過程
  應該把這工作交給DataAccess Application Block 你自己還要開關connection 何苦呢
  
  自己寫的東西最靠得住
  事實往往正好相反 多注意使用人家寫好的產品 又不收你錢 何苦那麼愛面子呢
  
   胡亂命名ASPX文件名
  這是最讓人痛苦的了 ASPX文件名不僅需要容易識別 還應該遵循一定規則 因為behind每個ASPX都會有一個同名的類 想象一下 多難受 另外大部分人不知道管理自己的項目的name space 讓人好像看到一本帳一樣
  
  從來不作繼承或派生
  一些具有相同行為的類 應該從公共的基類派生出來 實際意義上 我們的ASPX應該有一個基類PageBase 因為總有一些公共的特性需要抽象出來
  
  零property
  他們的類(ASPX所對應)裡只有private method 不公開自己的任何秘密 可以這一定是JAVA的遺老干的事
  
   零ASCX
  不用說 他還沒學會ASPNET
  
  使用DreamWeaverASPX
  這批人是美工 甚至有一些人在非常陶醉地討論如何更好地整合 DreamWeaver和Visual Studio
  
  只熟悉SystemWebUIWebControl和SystemDataSqlClient應該還有一些值得熟悉的類庫
  
  零注釋
  這些都是心裡很明白的快手 一任IDE生成的缺省注釋橫在那裡不管
  
  零事件
  對事件驅動一無所知 只知道在Page_Load()裡寫過程 或者雙擊一個按鈕寫Xxx_Clock()過程 在他們的程序裡看不到event和delegate
From:http://tw.wingwit.com/Article/program/net/201311/11437.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.