我正在開發一對庫以使用REST API。因爲我需要能夠以非常不同的設置使用API,所以我目前計劃在PHP(用於Web應用程序)和Python中的第二個版本(用於桌面應用程序和長時間運行的進程)中使用一個版本。在圖書館的發展過程中是否有最佳實踐來幫助維護我自己的理智?開發一致性庫的最佳實踐是什麼?
回答
因此,開發不同語言的並行庫的問題在於,對於同一個任務,通常不同的語言會有不同的習語。我從個人經驗中瞭解到這一點,他將一個圖書館從Python移植到PHP。習慣用法不僅僅是命名:例如,Python有很多可用於getter和setter的魔法,使對象屬性變得神奇; Python有monkeypatching; Python已經命名參數。用一個端口,你想選擇一種「基礎」語言,然後嘗試模仿其他語言的所有習語(不容易);對於並行開發,不要做太麻煩的事情,並且迎合最不共同的分母是可取的。然後栓上語法糖。
那麼,顯而易見的就是保持你的命名一致。在兩個實現中,函數和類應該以類似的方式命名(如果不是相同的話)。這通常會在您以兩種不同的語言單獨實現API時自然發生。儘管(至少在我的書中)大項目是遵循語言特定的習語。例如,讓我們假設我正在用我更熟悉的兩種語言實現REST API:Ruby和Scala。 Ruby版本可能有MyCompany::Foo
類,其中包含方法bar_baz()
。相反,同一個API的Scala版本將有一個類com.mycompany.rest.Foo
,方法barBaz()
。這只是命名約定,但我發現,要幫助API以特定語言感受「在家」,即使設計是在其他地方創建的,也有很長的路要走。
除此之外,我只有一條建議:文檔,文檔,文檔。在處理多實施API規範時,這很容易保持您的理智。
'成爲你自己的客戶':我發現首先編寫測試的技巧是確保API易於使用的絕佳方法。首先寫測試意味着你會像API的'消費者'一樣思考,而不僅僅是一個實現者。
試着爲兩者編寫一個通用的單元測試套件。也許可以用一種語言包裝一個類來從另一個語言中調用它。如果你做不到,至少要確保兩個版本的測試是相同的。
AFAIKT有很多從腳本語言的橋樑。我們來看看例如Jruby,它是Ruby + Java,然後有些東西可以將Ruby嵌入到Python中(或者以其他方式)。然後有一些像Etoile這樣的例子,其基礎是Objective-C,但也可以連接到Python和Smalltalk,另一種廣泛使用的方法:包裝C庫,例子是libxml2,libcurl等等。也許這可能是基礎。假設你爲Python編寫所有代碼,但是要實現與PHP的橋樑。所以你沒有那麼多的平行發展。
或者,也許這不是最糟糕的想法,讓我們來說說.NET,然後你突然有一大堆語言可供你使用,這些語言原則上應該可以從.NET平臺上的其他語言中使用。
爲什麼不使用python進行web應用呢?有幾個框架可用:django,web2py - 類似於django,但很多人說它使用起來更簡單,還有TurboGears,web。py,Pylons
沿着橋接的路線 - 您可以使用進程間通信讓PHP和python應用程序(在守護進程模式下)相互交談。
- 1. 實踐中的Android ADK開發 - 什麼是最佳實踐?
- 2. 窯庫的最佳實踐是什麼?
- 3. CSS3 - 性能最佳實踐是什麼?
- 4. 什麼是一些OOoBasic最佳實踐?
- 5. 什麼是一些Sharepoint最佳實踐?
- 6. html表單開發的最佳實踐是什麼?
- 7. neo4j服務器插件開發的最佳實踐是什麼?
- 8. 什麼是iPAD GUI開發的最佳實踐
- 9. 多JRE版本支持的最佳開發實踐是什麼?
- 10. 什麼是開發SSIS包的最佳實踐原則
- 11. 發佈開源項目的最佳實踐是什麼?
- 12. 什麼是PHP開發的最佳模式和實踐?
- 13. JMS開發最佳實踐
- 14. Django開發最佳實踐
- 15. Android開發最佳實踐
- 16. 什麼是Sharepoint(MOSS 2007)開發/部署最佳實踐
- 17. Web應用程序開發 - 什麼是文檔最佳實踐
- 18. PHP中的最佳實踐是什麼?
- 19. 什麼是您的CoreLocation最佳實踐?
- 20. 授權的最佳實踐是什麼?
- 21. 什麼是一些C++標準庫使用最佳實踐?
- 22. 實施數據庫修訂的最佳實踐是什麼?
- 23. 什麼是MEF最佳實踐?
- 24. 表架構,最佳實踐是什麼?
- 25. 什麼是AJAX最佳實踐?
- 26. 什麼是.htaccess RewriteRule最佳實踐?
- 27. MySQL索引 - 什麼是最佳實踐?
- 28. 什麼是最佳實踐System.Web.Mvc ViewModels
- 29. register_shutdown_function() - 什麼是最佳實踐?
- 30. Moneydance擴展開發的最佳實踐
在我們的例子中,這是因爲我們有一套現有的PHP工具套件,必須移植。 – acrosman 2009-06-06 06:05:58