和同事爭執了乙個很細節的設計問題

2021-09-05 14:37:57 字數 1476 閱讀 4204

下午的時候,和同事討論了產品安裝包中國際化的一些問題。本來對於乙個通過簡單的loader視窗來拾取安裝主介面語言的經典國際化安裝介面模式,是沒有什麼問題和不妥,可是對於這個loader視窗本身的國際化配置檔案,我卻和他在乙個很細節的設計上有了一些不同的意見。

這個loader視窗其實只有4個控制項,乙個label、乙個combolist和兩個button。需要國際化的地方也就4處,視窗標題、label內容和兩個button,如下圖:

本來要是從我的看法來說,這種視窗根本不做國際化都完全說得過去的,但是既然pm的spce規定要國際化,那就做唄。於是這裡要說的細節問題,就是關於這4個國際化資源的儲存格式的。同事的設計是使用*.ini檔案來存放loader視窗的國際化資源,其儲存格式大概為:

[settings]

// some settings for setup

[languages]

default=1033

langcount=2

key0=1033

key1=2052

[1033]

language=english

title=select setup language

description=select the languge to use during the installation:

ok=ok

cancel=cancel

[2052]

language=中文(簡體)

title=選擇安裝語言

description=請選擇在安裝過程中使用的語言:

ok=確定

cancel=取消

使用*.ini檔案,我覺得到沒有什麼,反正有現成的api可以讀取。只是對於[languages]節點的設定,我感覺有待商榷。[languages]節點功能其實一目了然,也就是設定預設語言、語言種類計數和語言描述。而我覺得這個ini檔案中languages section是多餘的,完全沒有必要,這裡面除了default這個key/value對外,其它的描述可以說是一種冗餘的資訊,只要有了下面各種具體語言的section,這個count以及key的資訊也就自動有了,而在languages section中放置count和keyn,反而會帶來修改ini檔案時需要手動同步資訊的負擔,使得該ini檔案沒有做到真正的文件格式自描述。

可是同事卻堅持認為,[languages]節點中的count和keyn是有必要的,而且就是在修改ini檔案時,即使國際化的語言有10多種,靠改檔案時自己數清楚count也是不難的事。我也並不是覺得數數語言的個數是mission impossible,但使我有些鬱悶的是雖然我確實覺得那個設計不是很好,可也沒有很有力的觀點來支援我自己的意見。當然這個問題本身不是什麼原則性的問題,而且按我們product team的規定,非原則性問題的最終決定權歸具體實現者:)

問乙個系統設計的問題

當使用hibernate開源框架去做乙個大中型系統的持久層時,我們一開始做的究竟應該是先設計資料庫,然後按照資料庫,使用工具將資料庫對映成物件 還是完全撇開傳統的關聯式資料庫思想,先建立實體之間關係圖 或建立域模型 然後根據該模型在設計資料庫。不知道大家在平時的設計時一般按哪樣的流程去做,能否介紹下...

乙個關於wcscpy和wcscpy s的問題

wcscpy 即為strcpy 的寬字元版本 unicode 與 t類似的,visual c 提供了類似的同名函式 ifdef unicode define tcscpy wcscpy else define tcscpy strcpy endif wcscpy s的作用和前面一樣,不過是ms搞出來...

問乙個關於如何設計處理多種異常原因的問題。

這個問題很簡單,經常會遇到,可是我一直沒有找到乙個自己覺得很好的辦法來處理。當要插入一條記錄是,當資料庫中已經存在一條相同的記錄時 比方說使用者名稱規定不能相同 方法名是add,那麼這個方法的定義是void好還是boolean好呢?我覺得如何用void的話,為了返回錯誤資訊就應該用丟擲異常的方式,這...