關於0bug商用之道的第三章的少用模板

2022-04-05 17:32:48 字數 1266 閱讀 8690

對於作者的這個觀點,我是有不同意見的。畢竟存在即道理。只是說在不同的場合有不同的作用罷了。

作者在使用跨平台跟嵌入式的微記憶體中,使用模板卻是有一定的受限的。畢竟使用模板在一定程度上是比較占用記憶體。並且有些ide也是不怎麼支援的。

但是這裡我得舉個反例,說一下模板的好處。

最近在做乙個外掛程式管理的藉口。

一、描述一下場景:有多種不同型別的外掛程式,假設只有有a和b兩種型別的外掛程式,每種型別的外掛程式有n個。然後使用者要使用a型別的外掛程式時候我就列出a型別的所有外掛程式供使用者選擇,反之亦然。但是使用的是嵌入式的wince系統,所以在管理外掛程式方面,當每次使用者要使用的時候才去匯入外掛程式,並獲取外掛程式的資訊,這樣子過程速度太慢使用者體驗不好。所以只能在程式執行起來的時候將所有外掛程式的基本資訊全部導進來。並且不管外掛程式a或者外掛程式b,它們的基本資訊雖然有一定的差異,但是差不多。

二、管理外掛程式的漸進過程:

1、在寫第一類外掛程式的匯入時候(即a型別外掛程式),簡單的寫完成。然後在寫第二類外掛程式的時候發現跟第一類外掛程式的**很類似。這時候筆者就想能否統一一下**,只寫乙份**,供所有型別外掛程式管理的使用。但是因為剛開始各類外掛程式定義的介面不是很合理,所以在基本資訊方面,各個介面也定義的五花八門。這裡就提出了將所有型別的介面的基本資訊全部弄成一樣的。

2、因為每個型別的介面它們是不同的介面,而為了統一介面就想到了模板的方法。首先在匯入介面基本資訊方面

templateonepluginfo importgeneral(

const filename& plugfilename, const strval&createfuncname)

template

onepluginfo initpluginfo(plugtype*plugtype)

view code

如上**所示,在分析某個外掛程式的時候,每個外掛程式有自己本身的建立匯入函式,所以需要使用typename createfunctype來進行操作。但是在建立的時候不同的外掛程式有自己本身不同外掛程式型別,但是如果直接在本函式進行初始化則根本無法完成,於是筆者就想到了再通過傳參讓模板本身去推導對應的建立返回是什麼型別。

這樣子,在這裡也就遵循了每個函式只做一件事的操作。如果不是因為遇到無法推導的問題,也許筆者可能直接在本函式裡面寫,而不會再去弄乙個initpluginfo函式來進行初始化,畢竟裡面操作的事情不算太多也就6~7行的樣子。

三、總結

所以相對不使用模板的方式編碼,使用模板的方式進行編碼可以節省了很多**,並且不那麼容易出錯,即使是出錯也只是一處地方而已。並且為了使用統一的**也會促使自己去統一所有外掛程式的基本資訊介面。並且程式設計的速度提高的n倍。

第三章 SQL的程式設計

use myschool go create table shengfu time datetime not null result nvarchar not null insert into shengfu time,result values 2005 05 09,勝 insert into s...

第三章 sql 的約束

1.0 約束分類 約束型別 主鍵預設值 唯一外來鍵 非空關鍵字 primary key default unique foreign not null 2.0 建立含約束的表 3.0 主鍵 約束英文 constraint 約束實際上就是表中資料的限制條件 主鍵是用於約束表中的一行,作為這一行的唯一識...

第三章的預習筆記

按位運算 符號 按位or運算 符號 按位and運算 符號 表示按位not運算 符號 按位xor運算。實現掩碼操作 通過與給定的乙個位模式進行按位與,可以提取所需要的位,對這些位進行 置1 清0 等。邏輯運算 符號 按位or運算 符號 表示and運算 符號!表示not運算。移位運算 邏輯移位 不考慮符...