Tutarlı kütüphaneleri geliştirmek için en iyi uygulamalar nelerdir?

6 Cevap php

Ben bir REST API ile çalışmak için kütüphanelerin bir çift geliştirmeye çalışıyorum. Ben şu anda (web uygulamaları için) PHP bir sürüm olması planlama ve Python ikinci sürümü (masaüstü uygulamaları için, ve uzun süren işlemler) ben çok farklı ortamlarda API kullanmak gerekiyor çünkü. Kendi aklı korumak yardımcı olmak için kütüphanelerin gelişiminde takip etmek en iyi yöntemler var mı?

6 Cevap

Yani, farklı dillerde paralel kütüphaneler gelişmekte olan sorun çoğu kez farklı dil aynı görev için farklı deyimler sahip olmasıdır. Ben, kişisel deneyimlerinden biliyoruz PHP Python bir kitaplık taşıdık sahip. Deyim sadece adlandırma değil: Örneğin, Python nesne özellikleri büyülü hareket yapmak için alıcılar ve ayarlayıcıları ile kullanabileceğiniz büyü iyi bir anlaşma vardır; Python monkeypatching vardır; Python parametreleri seçti.

Bir limana sahip, bir "taban" dil seçin ve ardından diğer dil (yapmak kolay değil) bütün deyimler taklit etmeye çalışmak için istiyorum; paralel gelişimi için, çok zor bir şey yapıyor ve en küçük ortak payda ikram tercih değil. Sonra sözdizimi şeker cıvata.

'Kendi müşteri olun': I yazma testleri tekniği ilk bir API kullanmak kolay sağlanması mükemmel bir yol olduğunu tespit ettik. Testler yazılı ilk sizin API bir 'tüketici' yerine, sadece bir uygulayıcı gibi düşünme anlamına gelir.

Her ikisi için ortak bir birim test paketi yazmaya çalışın. Belki diğer çağırarak için tek bir dilde bir sınıf sararak. Bunu yapamıyorsanız, en azından testlerin iki versiyonu eşdeğer olduğundan emin olun.

Peki, bariz bir tutarlı adlandırma tutmak olacaktır. Fonksiyonlar ve sınıflar hem uygulamalarında (değil aynı ise) benzer adlı olmalıdır. Iki farklı dilde ayrı bir API uygulamak zaman bu genellikle doğal olur. Büyük bilet öğe olsa (en azından benim kitabımda) dil özgü deyimleri takip etmektir. Yakut ve Scala: Örneğin, ben daha aşina olduğum iki dilde bir REST API uygulama olduğunu varsayalım. Ruby versiyon yöntemini içeren bir sınıf MyCompany::Foo olabilir bar_baz(). Bunun tersine, aynı API versiyonu Scala bir yöntem ile bir sınıf com.mycompany.rest.Foo olurdu barBaz(). Bu sadece adlandırma, ama ben uzun bir yol tasarımı başka bir yerde oluşturulduğu bile, belirli bir dilde "evde" hissetmek için API yardımcı gider bulabilirsiniz.

Belge, doküman, belge: bunun ötesinde ben tavsiye sadece bir parça var. Bu kolay bir çoklu-uygulama API spec ile uğraşırken aklı tutmak için en iyi yoldur.

AFAIKT betik dilleri arası köprüler bir yeri vardır. Kullanıcının örneğin JRuby alalım, bu Ruby + Java var, sonra Python Ruby (veya başka bir şekilde) embed şeyler vardır. Sonra baz Objective-C değil, aynı zamanda Python ve Smalltalk, geniş kullanımı ile ilgili başka bir yaklaşıma köprü Etoile gibi örnekler vardır: Sarma C kütüphaneler, örnekler Belki bu temel olabilir libcurl vs vs libxml2 vardır. Python'dan için yazma tüm söylüyorlar ama PHP için bir köprü uygulamak yapalım. Yani o kadar PARRALLEL gelişme yok.

Ya da belki de daha sonra aniden prensip olarak. NET platformunda her dilden kullanılabilir olmalıdır hizmetinizdedir için dil bir sürü var, hadi. NET üzerinde diyelim şeyler tabanına kötü bir fikir değil.

neden çok web uygulamaları için python kullanmak değil? Orada bulunan çeşitli çerçeveler vardır: Django, web2py - django benzer ama çok TurboGears web.py, Pylons, orada da, kullanımı basit söylüyorlar

köprüleme çizgisinde - PHP ve (daemon modunda) python uygulama birbirleriyle konuşmak zorunda arası iletişim kullanabilirsiniz.