Web uygulaması (PHP) geliştirme için en iyi uygulama iş akışı araçlarını ne düşünürdünüz? [kapalı]


18

Gerçekten daha fazla deneyime sahip birisinin soruyu cevaplarıma göre düzenleyebileceğini umuyorum:

  • sürüm kontrolü kullanma
  • test odaklı geliştirme
  • hata ayıklama kodu (php için xdebug)
  • UML diyagramlarının kullanımı
  • sürdürülebilir, yeniden kullanılabilir kod için OOP kullanımı
  • hızlı uygulama geliştirme için çerçeve kullanımı (php için Zend Framework gibi)

Yukarıda bahsettiğim başka bir şey var mı?

Temel olarak, geliştiricilerden oluşan bir ekip oluşturmanın ortasındayım (kendim bir geliştiriciyim) ve profesyonel programcıların / tasarımcıların vb birlikte nasıl çalışması ve hangi standartları / paradigmaları kullanmaları gerektiği konusunda bazı tavsiyeler istiyorum.

Ayrıca, konuyla ilgili herhangi bir kitap veya bağlantı varsa, bunu memnuniyetle karşılarım!

Aradığımı veya en azından bir kısmını tatmin ettiğimi tahmin ettim:

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

Yanıtlar:


9

sürüm kontrolü kullanma

SVN çok yaygındır, ancak cıva daha yakışıklı, güçlü ve sağlam gui desteğine sahiptir.

test odaklı geliştirme

ünite testi yaparsanız zaten kazanan taraftasınız demektir. araçlar için, bu bir seçim meselesidir. test mümkün olduğunca kolay olmalı, bu yüzden ben SimpleTest için PHPUnit hendek nedeni.

hata ayıklama kodu

birim testleri ile neredeyse xdebug gerekecek. xdebug genellikle profil oluşturma için kullanıyorum. (KCachegrind btw'yi inceleyin)

UML diyagramlarının kullanımı

kod mantığını yansıtan her şeyle ilgili en büyük sorun, senkronize tutmak için çok fazla manuel çalışma olmasıdır. bazı görevleri otomatikleştirebilirsiniz, ancak bu o kadar da kullanışlı değildir, çünkü genellikle bir şey olmadan önce uml kullanmak istersiniz. diğer sorun şema araçlarının kullanımı kalem, kağıt veya beyaz tahtadan çok daha zor olmasıdır. Birden fazla geliştiriciyle bir sorunu iletmeniz gerekiyorsa veya kendiniz için bir soyutlamaya ihtiyacınız varsa uml kullanın. ("dia" güzel bir ücretsiz araçtır. ayrıca zihin haritalama araçları beyin fırtınası için çok kullanışlıdır, bazıları aslında kalem ve kağıtla rekabet edebilir.)

sürdürülebilir, yeniden kullanılabilir kod için OOP kullanımı

oop bir dereceye kadar çalışıyor. :) iyi bir tavsiye: kompozisyon> kalıtım. kalıtım ilk bakışta yeniden kullanmak için güçlü bir araçtır, ancak bakım ve gevşek bağlantı bunun için acı çekecektir. ikinci iyi tavsiye: bakım> yeniden kullanım. soyut bir sistem çok güçlü olabilir ancak bakımı da zor olabilir.

hızlı uygulama geliştirme için çerçeve kullanımı (php için Zend Framework gibi)

RAD, uygulamanızı erken almak için iyi bir şeydir. ancak bazı bileşenler - özellikle ORM - en azından ölçeklenebilirlik söz konusu olduğunda ayaklarınızı vurur. Buradaki en büyük sorun, etki alanı mantığınızı nesnelerle çalışacak şekilde bağlamanızdır, bu da saf ölçeklenebilir bir veritabanı için optimize edilmiş çözüme ihtiyacınız varsa faktörü zorlaştırır. bunun farkında olun ve geliştiricilerinizi üst düzey soyutlama katmanları olmadan veritabanını kullanmaya teşvik edin. veritabanı soyutlama bir efsane, orm bir yalandır.

ÖPMEK

Yeni gelenler genellikle tüm bu en iyi uygulamaları uygulamak, kodlama standartları oluşturmak, tüm güzel takım zincirlerini kullanmak isterler. bazı geliştiriciler için işe yarıyor, ancak bazı şeyler çok katı ise zihinsel bir ablukaya girecek. birim testi ve scm gerçekten bir zorunluluktur, ancak birim testi için yeni birisinin gerçekten onu sevmeden önce değerini öğrenmesi gerekir. aşırıya kaçmayın, uygulamaları adım adım uygulayın ve nasıl çalıştığını görün. KISS ayrıca koda ayrılır. Bazen zor bir sorunu çözmenin en iyi yolu, yanlış çözmek. altı derece ayırmaya ihtiyacınız var algoritmasına mı ? sadece rastgele bazı arkadaşlar seçin. etrafında yanlış mantık ile tam bir uygulama oluşturabilirsiniz. müşteri sonunda onu terk etmeye karar verirse, herkes çok para biriktirdi.

çevik

çevik metodolojiler, aşırı programlama, scrum, vb. hakkında bilgi edinin. Orada birçok kitap var. herhangi bir kitap takımınızı daha iyi hale getirecektir, ancak her takım arkadaşını içine almak en iyisidir.


1
Harika cevap! Teşekkürler. Sizin için +150 temsilci efendim! Sorunun altındaki sayfanın üstünde yer alacağı için yayına başka bir şey eklemekten çekinmeyin. @TODO gibi şeyler kod, yorum ve dokümantasyon yazılımı vb.
Damien Roche

2
  • Sürüm Kontrolü: Windows'da ise, TortoiseSVN, deneyimimde kullanmak için en iyi, en sezgisel ve en kolay olanıdır.

  • Çerçeve: CodeIgniter . PHP için en iyi web geliştirme platformunda eller.

  • IDE: Netbeans, Windows için kullandığım PHP için en iyi IDE'dir.

  • Birim Testi: Birkaç seçenek vardır, bir google araması birçok şeyi ortaya çıkarır. CodeIgniter ayrıca kendi birim test cihazına sahiptir.

  • Hata ayıklayıcı: Xdebug.

  • Javascript Kütüphanesi: Jquery

  • FTP Programı: FileZilla

  • Veritabanı Yönetimi: PhpMyAdmin

  • Tel çerçeve : Balsimus Mockup veya bir beyaz tahta kullanın.

  • Çeşitli: Apache, mysql ve php'yi tek bir pakette kolayca yüklemek, başlatmak, durdurmak ve yeniden başlatmak için pencerelerde WAMP kullanın.

Ayrıca, birçok farklı web sitesinde çalışacaksanız ve bu web sitelerinin çoğunda kaydolma, giriş / çıkış, kullanıcı aramak için bir yönetici bölümü vb.Gibi bazı ortak işlevler olacaksa, hangi çerçevede küçük bir proje oluşturmanızı öneririm seçtiğinizde ve bu projeyi başlattığınız her yeni projenin temeli olarak kullanırsınız. Normalde bu projeye 'iskelet' diyorum. Xyz.com üzerinde çalışmaya başlayacaksam, iskelet dizinini kopyalayıp 'xyz.com' olarak yeniden adlandırır, bazı yapılandırma dosyalarını doldurur ve bazı özelliklerle xyz.com'un bir kopyasını alırım Zaten çalışıyor.


1
Bu yazıyı okuduktan ve önerilen öğelerin birkaçını zaten kullandıktan sonra Netbeans IDE'yi denemeye karar verdim. Herkes PHP / Codeigniter geliştirme için onunla kullanmaya değer herhangi bir eklenti önerebilir misiniz? Ayrıca, Wampserver ile iyi çalışabilir mi?
Gortron

1
@Gortron Ben kodigniter ile netbeans kullanın. Codeigniter / netbeans için bir otomatik tamamlama aracı vardır: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP gerçekten kalbinde bir unix dilidir ve linux sanal makinede geliştirmek iyi bir fikirdir. Ayrıca yıkım kaçının, 2010 dağıtılmış bir şey kullanın (git, hg, bzr). hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.Bu açıkçası saçmalık. Symfony, rails veya django kullandıysanız, bazı büyük sorunlar göreceksiniz. Modüler dizin yapısı, komut satırı arayüzü yoktur. Sonra formlar ve modeller gibi çok sayıda kod alan çekirdek bileşenler var. Herhangi bir yazılım modeli biliyorsanız, kodignitörün büyük zaman aldığını göreceksiniz. En azından, CI çatallı ve topluluk öldükten sonra düzgün bir şekilde yapılan Kohana kullanın.
Keyo

Windows kullanıyorsanız, phpMyAdmin yerine SQLyog'u ( topluluk sürümüne sahip ) öneriyorum . Linux'ta SQLyog için iyi bir yedek bulamadım, ki bu utanç verici ...
Dean Harding

1
@keyo, Bağlantı için teşekkürler. Otomatik tamamlama aracını modellerde birçok işlevi olan bir proje için çok kullanışlı olan Netbeans'e ekledim. Henüz SVN'den değişeceğimi sanmıyorum, sadece 1 kişilik bir orduyum, sanırım şu anda dağıtılmış sistemlere gerek yok.
Gortron

2

Çoğunlukla Click Upvote'un gönderisini kabul ediyorum, ancak nispeten büyük bir sitede çalışıyorsanız, Doktrin ORM ile birlikte Symfony çerçevesini kullanmanızı kesinlikle tavsiye ederim.

Projeniz önümüzdeki yıl yapılacaksa, Symfony2 ve Doctrine2'ye yatırım yapmak için zaman ayırın diyebilirim.

Ayrıca, unix tabanlı sistem üzerinde geliştirmenin önemini vurgulayamıyorum, Ubuntu benim tercihim ve her şeyden önce harika bir web sunucusu. Öncelikle pencerelerde çalışıyorum, ancak masaüstümdeki (veya işteyken sunucumdaki) bir VMWare sanal makinesinde çalışan Ubuntu üzerinde geliştiriyorum.

IDE'ye gelince, NuSphere PHPEd veya Storm PHP'yi kullanmanızı tavsiye ederim, ne yazık ki ücretsiz değiller.


ORM için +1. Ben Codeigniter boilerplate sorguları yazma sayısız saat geçirdim.
Keyo

PHP, Linux tabanlı bir sistemde çok daha iyidir. Özellikle C tabanlı bir eklenti kullanmak istiyorsanız (libmemcached veya ImageMagick akla geliyor)
Dean Harding

bazı harika şeyler ücretsiz, linux ne olacak?
dan_waterworth

0

UML diyagramının kullanımı güzel ancak tamamen isteğe bağlıdır. Herhangi bir diyagram, ekibiniz ne anlama geldiğini anladığı sürece olur. Hiç kimsenin iyi bilmediği bir standart kullanmaya çalışmak sorunlara ve zaman kaybına yol açabilir.

Her sayfayı bir maketten ( http://balsamiq.com ) başlatmanızı veya tasarımcınızın sizin için çizmesini öneririm . Geliştiricilerin görsel estetikte iyi olmasını ve hiçbir yerden iyi sayfalar oluşturmasını beklemeyin.

Birkaç üst düzey ekip üyeniz varsa, kod inceleme görevine atanmış birisine başvurun - dönüşümlü olarak inceleme yapmasını sağlayın ( İnceleme Kurulu )


0

Ortak çalışma ile uğraşırken ihtiyacınız olan:

• sürüm kontrolü kullanarak: Git veya Subversion'ın oldukça düzgün çalışacağını düşünüyorum

• test odaklı geliştirme: Bunun bir zorunluluk olduğunu öğrenmeye başladım, ama aşırıya kaçmayın

• hata ayıklama kodu (php için xdebug): xdebug benim seçimim

• UML diyagramlarının kullanımı: Bu, herkesin OO Programlama ve DesignPatterns hakkında çalışma bilgisine sahip olmasına yardımcı olur, ancak yine de her zaman iyi bir uygulamadır

• sürdürülebilir, yeniden kullanılabilir kod için OOP kullanımı: Ve ESNEKLİK, bu OOP'nin kilit yönü olduğunu düşünüyorum.

• hızlı uygulama geliştirme için çerçeve kullanımı (php için Zend Framework gibi): Tavsiyem ilk php çerçevesi olan SYMFONY (bir araç takımı değil). Çok büyük bir bağlılığı, birçok belge vardır ve tamamen php üzerinde uygulanır. Onunla bir yıldır çalışıyorum ve tamamen OOP ile bağlanıyor

• hataları, özellik isteklerini, vb . İzlemek için bir sisteme ihtiyacınız olabilir: Mantis veya Track . Bu sistemler oldukça kolay ve anlaşılır. Ayrıca yıkımınızı bağlamanıza ve taahhütlerinizi insanların gönderdiği belirli özelliklere veya hatalarla ilişkilendirmenize izin verir.

Son olarak, periyodik olarak küçük toplantılar yapmak için bir dev ekibine liderlik etmek her zaman önemlidir, böylece herkes sistemin durumunu belli bir noktada bilir ve belki de bu şekilde işlerin nasıl çalıştığını planlayabilir veya görebilir.

Şirketimde her gün ne üzerinde çalıştığımı ve herhangi bir komplikasyonun olup olmadığını söyleyen bir e-posta göndermeliyim.

İyi şanslar!


0
  • Çerçeve : şüphe yok, şüphesiz. Bu şimdiye kadar gerekli olabilecek tüm işlevleri vardır ve sürece bunların hiçbirini kullanmayı zorlamaz yapmak gereğini onlara;
  • Sürüm kontrolü, IDE : Oldukça eski bir okulum ve cevabımın size gerçekten yardımcı olabileceğini sanmıyorum;
  • Wireframing, UML : eski okul da bu, ama gerçekten: yazı tahtaları kazanıyor. Esnek, genişletilebilir ve uygun gördüğünüz herhangi bir sözleşmeyi desteklerler;
  • Veritabanı yönetimi : phpmyadmin;
  • Geliştirme sunucusu işletim sistemi : Ben banal olabilirim, ama: Ubuntu. Saniyeler içinde bir LAMP sunucusu kurun; yeni kütüphaneler ekleme konusunda paniğe kapılmayın (korkunç imagick: bir komut, bitti); PHP'yi seviyorsanız, muhtemelen üretimde linux sunucusu üzerinde çalışacaksınız, bu yüzden pratik yapmaya başlamak daha iyi. (Feragatname: Ubuntu benim en sevdiğim dağıtım değil).
  • Misc : grep, diğer insanların kodlarında hata ayıklama yaparken inanılmaz derecede yararlı olabilir (belirli bir modeli kaç denetleyicinin kullandığını bilmek ister misiniz?

Düzenle

En önemli şeyi unuttum: özellikler. Herhangi bir koda dokunmadan önce projeniz için gerçek özellikler yazın . Tüm kullanıcı etkileşim şemalarını aklınızda bulundurun. Yüzyıllar boyu kurtaracak.


0

Sürüm Kontrolü Bir ekipte çalıştığınız için dağıtılmış bir şeyle uğraşmak sizin yararınıza olacaktır. Adaylarınız Git ve Mercurial. Bu, ekibinizin projeyi bozmadan yerel olarak taahhütte bulunabileceği, ancak yine de çalışmalarını takip edebileceği, ardından bu taahhütleri merkezi sunucuya gönderebileceği anlamına gelir. Aynı zamanda çok daha hızlıdır ve kod revizyonlar yerine değişiklik kümeleri olarak izlendiğinden, birleştirme çakışmaları daha azdır. Hginit kılavuzunu okuyun (yığın taşmasının kurucu ortağı tarafından daha az yazılmış) ve bir DVCS'nin ne olduğu hakkında biraz daha fazla bilgi sahibi olacaksınız. http://hginit.com/

Depoyu dağıtım için rsync veya ftp yerine de kullanmalısınız.

Test Odaklı Geliştirme Test yaptığınız şeye bağlı olarak çok zaman harcayabilirsiniz. Tamamen atlamanız gerektiğini söylemiyorum, küçük projeler için havai. Bir kütüphane veya uzun vadeli büyük bir proje yazıyorsanız, bunun için testler yazdığınızdan emin olun. Testler bakım aşamasında yardımcı olacaktır. TDD'nin tüm hatalarınızı bulamadığını unutmayın. Kullanıcı deneyimi sorunları, düzen sorunları, performans sorunları vb. Olacaktır.

Hata ayıklama Xdebug temelde burada tek seçimdir. Netbeans ile iyi bütünleşir. Değişkenleri yazdırmanız gerektiğini düşünüyorsanız, bir günlük dosyası kullanmalısınız. Çerçeveler günlük işlevini kullanın, bu üretimde çok daha güvenlidir.

Planlama / Diyagramlar İyi bir çerçeve kullanıyorsanız, detaylı diyagramlar yapmanıza gerek yoktur. Basit tutun ve daha kısa serbest bırakma döngülerinde çalışın, fazla plan yapmak kolaydır. Bir projenin gereksinimleri ve spesifikasyonları değişmek zorundadır, bu yüzden tüm zamanınızı onlara harcamak istemem. En ayrıntılı düzeyde kod IS belirtimi olduğunu unutmayın.

Spesifikasyonu ekip üyelerine atayabileceğiniz görevlere ayırmak için hata izleme aracınızı (aşağıya bakın) kullanın. Projeleri belgelemek için merkezi bir araç kullanın, hata izleyicinin muhtemelen bir wiki'si olacaktır.

Şemalarda veritabanı şemaları tasarlamak ve bunları SQL olarak dışa aktarmak için Mysql Workbench gibi bir araç kullanabilirsiniz.

Çerçeveler ve OOP Bu muhtemelen en önemli kısımdır. Kendinize hızlı geliştirme ve kodların yeniden kullanılmasını destekleyecek popüler bir çerçeve bulun. Bazı insanlar bunu söylememi sevmez, ancak bir çerçeve çalışma şeklinizi dikte etmelidir. Bir geliştiricinin projeyi değiştirebilmesi ve belirli bir sayfanın denetleyicisinin tam olarak nerede olduğunu, şablon değişkenlerinin tam olarak ne olduğunu ve modelin nasıl sorgulanacağını bilmesi için yapı sağlamalıdır. Bazı çerçeveler burada çok fazla esnekliğe izin veriyor ve geliştiricilerin çerçeveyi her zaman aynı şekilde kullanmadığını göreceksiniz. Python felsefesini seviyorum; her şeyi yapmanın bariz bir yolu olmalı. Bu yüzden django ve rayları seviyorum, oldukça fikirliler ve bu başka birinin koduna bakıp ne yaptığını anlayabileceğim anlamına geliyor. Symfony burada en iyi seçenek gibi görünüyor,

Yığın taşmasıyla ilgili şu gibi birçok 'hangi çerçeve' sorusu vardır: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

Hata Takip Ekibinize geliştiriciler için yapılmış iyi bir hata izleyici alın. Basecamp gibi basitleştirilmiş bir şey kullanmayın. Redmine ve Unfuddle, mükemmel hata izleyicilerinin iki örneğidir, ayrıca zamanı izleyebilir ve depolarınızla entegre olabilirler. Ekibiniz bu aracı e-posta veya anlık mesajlaşma yerine sorunlar hakkında iletişim kurmak için kullanmalıdır. Mevcut bir hata ve doküman geçmişi mevcut olduğunda yeni bir geliştiricinin işini kolaylaştırır. Bu makale, iyi bir hata izleyicinin ne yapması gerektiğini ve nedenini tam olarak açıklamaktadır. http://www.joelonsoftware.com/articles/fog0000000029.html


0

Sürüm kontrolü için Bazaar'a bakmanızı tavsiye ederim. Git ile karşılaştırıldığında, Windows, Mac OS ve Linux'ta kullanımı ve kurulumunun aslında kolay olması büyük bir avantaja sahiptir. Ayrıca bzr komutları svn muadillerine çok benzemektedir, bu nedenle Subversion ile daha önce çalışan biri, bir öğrenme eğrisi olmadan Çarşı'yı kolayca kullanabilir. Sana bakıyorum Git.

Bunun dışında, geliştiricilerinize hiçbir şey zorlamadığım için güçlü bir inancım. Bu arı, IDE'yi, işletim sistemini vb.

Bunun dışında, ne kadar sıkıcı olursa olsun, tüm kodlarınız için wirte testleri yapmanızı şiddetle tavsiye ederim.

Bir çerçeve imho'su için veya buna karşı karar, burada yapılan önerilere dayanarak yapabileceğiniz bir şey değildir. Size özelliklerine göre size umut vaat edenleri listelemenizi ve her birine küçük bir test uygulaması yazmanızı öneririm. (Her seferinde aynı olanı yazın.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.