一步一步回答完下列的問題,我相信你的答案就呼之欲出了:
準備-1.定義要解決的這個問題
-2.網上怎麼分解這個問題,同行怎麼分解這個問題
檢索-1.問題複雜度,專案工期,專案成員的能力,可以把握的資源
-2.開源專案、朋友使用推薦、同行解決方案
需求-1.使用規模和限制、使用時間
-2.對源**(需要新增外部庫的**)的熟悉程度,可更改程度
橫評外部
-1.口碑:大家都說好不一定好,大家都說不好,那就好不到哪去了
-2.目標清晰:這個庫解決問題是否清晰
-3.可靠:庫所依賴的工具,語言是否可靠通用
-4.熱度和準確度:搜尋第一頁能找到你要的內容嗎?第一頁有多少是你要的資訊
-5.授權:分發的license,對私人專案和公司專案影響最大
-6.整合的複雜度(高度模組化、最小入侵、對外部少假定)
-7.有可編譯、可調式的原始碼
-8.活躍:庫目前是否持續更新,作者是否接受了其他貢獻者的pull-request,
-9.**成熟度:有明確的分支,還是只有master
-10.原始碼提供是zip,還是fork,還是bin
-11.build步驟明確簡單嗎?build工具你需要經常用到嗎?能否整合到自動化build?
內部-1.庫對外的使用方便嗎?引用的檔案多嗎?
-2.介面清晰,而且命名規範,讀起來少嗎?
-3.庫發布的形式靈活嗎?lib/dll/md/mt/x86/x64
-4.庫的安全感(朋友推薦,靠譜程度)
-5.客戶支援,維護工作量,可移植性
-6.學習曲線:網上分布中高低階教程分別都是些什麼人,容易找到嗎
-7.錯誤處理,穩定性,效能開銷,工具
-8.日誌系統,應一致處理執行時訊息,易於整合到現有的日誌系統。更好的應該是給予可以調節從高到低輸出的開關
-9.記憶體管理(沒有不必要的開銷,所有分配和釋放職責清楚、當分配超出時應該通知外部)
-10.對i/o訪問處理,第三方庫不應該自己猜測使用者的輸入方式,譬如自己用fopen
-11.有之前發布的release note嗎
-12.未來:有發展方向的roadmap嗎
how to 編寫乙個Iterator
首先,考慮編寫iterator,我們需要基於哪幾個方面的考慮 由於迭代器會訪問list的私有域,因此,可以有2種方式 一種的改變list的域的可見性,讓其變成public或friendly 預設的可見性,即包可見性 的,不過這違反了良好的物件導向程式設計的羈絆原則,它要求資料盡可能的隱蔽。另外一種是...
去解決乙個問題
你自己可以選擇乙個有挑戰性的題目去攻克嘛,機器學習裡面的,不就行了。伺服器裡面也是的嘛。是的這樣我覺得比較有意思一點,是的,如果將來你真的想進入某乙個領域,你自己先主動解決乙個問題。永遠記住一點,永遠去解決問題,原先激情的你很注重這種結果,現在你踏實學習反而只注重過程不注重結果了。你自己主動去解決問...
乙個初學者的找的乙個小問題 翻牌問題
這裡有100張寫著數字1 100的牌,並按順序排列著。最開始所有牌都是背面朝上放置。某人從第2張牌開始,隔1張牌翻牌。然後第2,4,6 100張牌就會變成正面朝上 接下來,另乙個人從第3張牌開始,隔2張牌翻牌 原本背面朝上的,翻轉成正面朝上 原本正面朝上的,翻轉成背面朝上 再接下來,又有乙個人從第4...