Apa yang Anda anggap alat workflow praktik terbaik untuk pengembangan aplikasi web (PHP)? [Tutup]

18

Saya benar-benar berharap seseorang dengan lebih banyak pengalaman dapat mengedit pertanyaan sesuai dengan contoh jawaban saya:

  • menggunakan kontrol versi
  • pengembangan berbasis tes
  • kode debug (xdebug untuk php)
  • penggunaan diagram UML
  • penggunaan OOP untuk kode yang dapat dipelihara dan digunakan kembali
  • penggunaan framework (seperti Zend Framework untuk php) untuk pengembangan aplikasi yang cepat

Ada lagi atau penjabaran dari apa yang saya sebutkan di atas?

Pada dasarnya, saya berada di tengah-tengah pembentukan tim pengembang (saya sendiri adalah pengembang) dan saya ingin saran tentang bagaimana programmer / desainer profesional dll harus bekerja bersama dan standar / paradigma apa yang harus mereka gunakan.

Juga, jika ada yang punya buku atau tautan tentang masalah ini, saya akan menyambutnya!

Saya memang menemukan ini yang menurut saya memuaskan apa yang saya cari, atau setidaknya sebagian darinya:

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

Damien Roche
sumber

Jawaban:

9

menggunakan kontrol versi

SVN sangat umum, tetapi lincah lebih tampan, kuat dan memiliki dukungan gui yang solid.

pengembangan berbasis tes

baik, jika Anda melakukan pengujian unit Anda sudah di pihak yang menang. untuk alat, ini masalah pilihan. pengujian harus semudah mungkin, itulah alasan mengapa saya membuang PHPUnit untuk SimpleTest.

kode debugging

dengan unit test Anda tidak perlu xdebug. saya menggunakan xdebug biasanya untuk profil saja. (lihat KCachegrind btw)

penggunaan diagram UML

masalah terbesar dengan segala sesuatu yang mencerminkan logika kode adalah banyak pekerjaan manual untuk tetap sinkron. Anda dapat mengotomatiskan beberapa tugas, tetapi itu tidak berguna, karena Anda biasanya ingin menggunakan uml sebelum Anda memiliki sesuatu. masalah lainnya adalah alat diagram jauh lebih sulit digunakan daripada pena dan kertas atau papan tulis. gunakan uml jika Anda harus mengomunikasikan masalah dengan banyak pengembang atau jika Anda membutuhkan abstraksi untuk diri sendiri. ("dia" adalah alat gratis yang bagus. alat pemetaan pikiran juga sangat berguna untuk tukar pikiran, beberapa bahkan dapat bersaing dengan pena dan kertas.)

penggunaan OOP untuk kode yang dapat dipelihara dan digunakan kembali

well, oop berhasil sampai batas tertentu. :) satu saran yang bagus: komposisi> warisan. warisan adalah alat yang ampuh untuk digunakan kembali pada pandangan pertama, tetapi perawatan dan sambungan longgar akan menderita karenanya. saran bagus kedua: maintenance> reuse. sistem abstrak bisa sangat kuat, tetapi juga sulit untuk dipelihara.

penggunaan framework (seperti Zend Framework untuk php) untuk pengembangan aplikasi yang cepat

RAD adalah hal yang baik untuk mengeluarkan aplikasi Anda lebih awal. tetapi beberapa komponen - terutama ORM - akan menembak kaki Anda, setidaknya jika menyangkut skalabilitas. masalah utama di sini adalah bahwa Anda mengikat logika domain Anda untuk bekerja dengan objek, yang menjadi sangat sulit untuk faktor jika Anda membutuhkan solusi yang dioptimalkan database murni scalable. Ketahuilah itu dan dorong pengembang Anda untuk menggunakan database tanpa lapisan abstraksi tingkat tinggi. database abstraksi adalah mitos, orm adalah bohong.

CIUMAN

pendatang baru biasanya ingin menerapkan semua praktik terbaik di sekitar, mengatur standar pengkodean, menggunakan semua rantai alat yang bagus, apa pun. itu bekerja untuk beberapa pengembang, tetapi beberapa akan mengalami mental blockade jika semuanya terlalu ketat. unit testing dan scm benar-benar harus dimiliki, tetapi seseorang yang baru dalam unit testing benar-benar perlu mempelajari nilainya sebelum dia menyukainya. jangan berlebihan, terapkan praktik langkah demi langkah dan lihat bagaimana hasilnya. CIUMAN juga bermuara pada kode. terkadang cara terbaik untuk memecahkan masalah yang sulit, adalah dengan menyelesaikannya dengan salah. Anda membutuhkan algoritma pemisahan enam derajat ? cukup pilih beberapa teman secara acak. Anda dapat membuat aplikasi lengkap di sekitarnya, dengan logika yang salah. jika pelanggan akhirnya memutuskan untuk membuangnya, semua orang menghemat banyak uang.

tangkas

pelajari tentang metodologi lincah, pemrograman ekstrem, scrum, dll. ada banyak buku di luar sana. buku apa pun akan membuat tim Anda lebih baik, tetapi yang terbaik adalah memasukkan setiap rekan setim ke dalamnya.

alan blaire
sumber
1
Jawaban yang fantastis! Terima kasih. +150 perwakilan untuk Anda, Tuan! Jangan ragu untuk menambahkan hal lain ke posting karena akan ditampilkan di bagian atas halaman di bawah pertanyaan. Hal-hal seperti @TODO dalam kode, komentar, dan perangkat lunak dokumentasi, dll.
Damien Roche
2
  • Kontrol Versi: Jika di windows, TortoiseSVN adalah yang terbaik, paling intuitif dan paling mudah digunakan dalam pengalaman saya.

  • Kerangka Kerja: CodeIgniter . Gunakan platform pengembangan web terbaik untuk PHP.

  • IDE: Netbeans adalah IDE terbaik untuk PHP yang pernah saya gunakan di windows.

  • Unit Testing: Ada beberapa opsi, pencarian google akan muncul banyak. CodeIgniter juga memiliki unit tester sendiri yang tersedia.

  • Debugger: Xdebug.

  • Perpustakaan Javascript: Jquery

  • Program FTP: FileZilla

  • Administrasi Database: PhpMyAdmin

  • Wireframing: Balsimus Mockup, atau gunakan papan tulis.

  • Lain-lain: Gunakan WAMP jika pada windows untuk menginstal, memulai, menghentikan, & memulai kembali apache, mysql, dan php semua dalam satu paket dengan mudah.

Juga, jika Anda akan bekerja di banyak situs web yang berbeda, dan sebagian besar situs web tersebut akan memiliki beberapa fungsi umum seperti pendaftaran, masuk / keluar, bagian admin untuk mencari pengguna, dll, saya sarankan membangun proyek kecil dalam kerangka mana pun Anda memilih, dan menggunakan proyek itu sebagai dasar untuk setiap proyek baru yang Anda mulai. Biasanya saya menyebut proyek ini 'kerangka'. Jika saya akan mulai bekerja di xyz.com, saya akan menyalin direktori kerangka dan menamainya sebagai 'xyz.com', mengisi beberapa file konfigurasi, dan saya akan memiliki salinan xyz.com dengan beberapa fitur sudah bekerja.

Klik Upvote
sumber
1
Setelah membaca posting ini dan melihat saya sudah menggunakan beberapa item yang direkomendasikan, saya memutuskan untuk mencoba Netbeans IDE. Adakah yang bisa merekomendasikan plugin yang akan bermanfaat untuk digunakan bersama PHP untuk pengembangan PHP / Codeigniter? Juga, bisakah itu bekerja dengan baik dengan Wampserver?
Gortron
1
@Gortron Saya menggunakan netbeans dengan codeigniter. Ada alat autocomplete untuk codeigniter / netbeans: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP benar-benar merupakan bahasa yang tidak terpisahkan dan pengembangan pada mesin virtual linux adalah ide yang bagus. Juga hindari subversi, ini 2010 menggunakan sesuatu yang didistribusikan (git, hg, bzr). hginit.com
Keyo
Framework: CodeIgniter. Hands on the best web development platform for PHP.Ini, terus terang adalah omong kosong. Jika Anda pernah menggunakan symfony, rails atau django Anda akan melihat beberapa masalah besar. Tidak ada struktur direktori modular, tidak ada antarmuka baris perintah. Kemudian Anda memiliki komponen inti seperti formulir dan model yang mengambil banyak kode. Jika Anda tahu ada pola perangkat lunak sama sekali, Anda akan melihat bahwa codeigniter menyebalkan. Paling tidak gunakan Kohana, yaitu CI yang bercabang dan dilakukan dengan benar setelah masyarakat meninggal.
Keyo
Jika Anda menggunakan Windows, saya akan merekomendasikan SQLyog (mereka memiliki edisi komunitas ) alih-alih phpMyAdmin. Saya tidak pernah menemukan pengganti yang layak untuk SQLyog di Linux, yang memalukan ...
Dean Harding
1
@keyo, Terima kasih atas tautannya. Saya telah menambahkan alat autocomplete ke Netbeans, sangat berguna untuk proyek dengan banyak fungsi dalam model. Saya tidak berpikir saya akan berubah dari SVN dulu, saya hanya pasukan 1, tidak perlu sistem terdistribusi saat ini saya pikir.
Gortron
2

Saya sebagian besar setuju dengan posting Click Upvote, namun jika Anda bekerja di situs yang relatif besar saya pasti akan merekomendasikan menggunakan kerangka kerja Symfony ditambah dengan ORM Doctrine.

Jika proyek Anda akan jatuh tempo tahun depan, saya akan mengatakan luangkan waktu untuk berinvestasi di Symfony2 dan Doctrine2.

Juga, saya tidak bisa cukup menekankan pentingnya pengembangan pada sistem berbasis unix, Ubuntu adalah pilihan saya dan server web yang hebat. Saya bekerja terutama di windows tetapi berkembang di Ubuntu yang berjalan di mesin virtual VMWare di desktop saya (atau server ketika saya sedang bekerja).

Sedangkan untuk IDE saya sangat merekomendasikan menggunakan NuSphere PHPEd atau Storm PHP, sayangnya seperti semua hal hebat mereka tidak gratis.

xzyfer
sumber
+1 untuk ORM. Saya telah menghabiskan banyak waktu menulis permintaan boilerplate di codeigniter.
Keyo
PHP jauh lebih baik pada sistem berbasis Linux. Khususnya jika Anda ingin menggunakan plugin berbasis C (libmemcached atau ImageMagick datang ke pikiran)
Dean Harding
beberapa hal hebat gratis, bagaimana dengan linux?
dan_waterworth
0

Penggunaan diagram UML bagus tetapi sepenuhnya opsional. Diagram apa pun akan dilakukan asalkan tim Anda memahami apa artinya. Mencoba menggunakan standar yang tidak ada yang benar-benar tahu dapat menyebabkan masalah dan kehilangan waktu.

Saya akan merekomendasikan untuk memulai setiap halaman dari mockup ( http://balsamiq.com ) atau minta desainer Anda untuk menggambarnya untuk Anda. Jangan berharap pengembang menjadi ahli dalam estetika visual dan membuat halaman yang bagus entah dari mana.

Minta seseorang ditugaskan untuk mengkaji kode, jika Anda memiliki beberapa anggota tim senior - buat mereka melakukan tinjauan secara bergiliran ( Dewan Peninjau )

Ilya Kochetov
sumber
0

Saat berhadapan dengan kerja kolaboratif yang Anda butuhkan:

• menggunakan kontrol versi: saya pikir Git atau Subversion akan bekerja dengan cukup lancar

• pengembangan yang digerakkan oleh tes: Saya mulai belajar ini adalah suatu keharusan, tetapi jangan membawanya terlalu ekstrem

• kode debugging (xdebug untuk php): xdebug adalah pilihan saya

• penggunaan diagram UML: Ini membantu ketika semua orang memiliki pengetahuan tentang Pemrograman OO dan Pola Desain, namun itu selalu merupakan praktik yang baik

• penggunaan OOP untuk kode yang dapat digunakan dan dapat digunakan kembali: Dan FLEKSIBILITAS, saya pikir ini adalah aspek kunci dari OOP.

• penggunaan framework (seperti Zend Framework untuk php) untuk pengembangan aplikasi yang cepat: Saran saya adalah SYMFONY, kerangka kerja php pertama (bukan toolkit). Ini memiliki komunitas yang sangat besar, banyak dokumentasi, dan sepenuhnya diimplementasikan di php. Saya telah bekerja dengannya selama setahun dan itu benar-benar mengikat dengan OOP

• Anda mungkin juga membutuhkan sistem untuk melacak bug, permintaan fitur, dll. Seperti: Mantis atau Track . Sistem ini sangat mudah dan mudah. Mereka juga memungkinkan Anda mengikat subversi dan menghubungkan komitmen Anda dengan fitur atau bug tertentu yang diposkan orang.

Akhirnya, selalu penting jika Anda akan memimpin tim dev untuk melakukan pertemuan kecil secara berkala sehingga semua orang tahu status sistem pada titik tertentu dan mungkin dengan cara itu Anda akan mampu merencanakan atau melihat cara kerja.

Di perusahaan saya, saya harus mengirim email setiap hari untuk mengatakan apa yang telah saya kerjakan dan jika ada komplikasi.

Semoga berhasil!

guiman
sumber
0
  • Kerangka kerja : codeigniter, tanpa keraguan. Ia memiliki semua fungsi yang mungkin Anda butuhkan, dan tidak memaksa Anda untuk menggunakannya kecuali Anda memang membutuhkannya;
  • Kontrol versi, IDE : Saya sudah tua-sekolah, dan saya tidak berpikir jawaban saya benar-benar dapat membantu Anda;
  • Wireframing, UML : sekolah tua dalam hal ini juga, tapi sungguh: papan tulis menang. Mereka fleksibel, dapat diperluas, dan mendukung konvensi apa pun yang Anda anggap cocok;
  • Administrasi basis data : phpmyadmin;
  • Server pengembangan OS : Saya mungkin dangkal, tetapi: Ubuntu. Instal server LAMP dalam hitungan detik; jangan panik menambahkan perpustakaan baru (imagick yang ditakuti: satu perintah, selesai); jika Anda menyukai PHP, Anda mungkin akan bekerja di server linux dalam produksi sehingga lebih baik untuk mulai berlatih. (Penafian: Ubuntu bukan distribusi favorit saya).
  • Lain-lain : grep dapat sangat berguna ketika men-debug kode orang lain (ingin tahu berapa banyak pengontrol yang menggunakan model yang diberikan? Done!).

sunting

Saya lupa hal yang paling penting: spesifikasi. Tulis spesifikasi nyata untuk proyek Anda sebelum menyentuh kode apa pun. Siapkan semua diagram interaksi pengguna. Ini akan menyelamatkan Anda berabad-abad.

cbrandolino
sumber
0

Kontrol Versi Karena Anda bekerja dalam sebuah tim, Anda sebaiknya pergi dengan sesuatu yang didistribusikan. Kandidat Anda adalah Git dan Mercurial. Ini berarti tim Anda dapat melakukan secara lokal tanpa merusak proyek, tetapi tetap melacak pekerjaan mereka, lalu dorong komitmen ini ke server pusat. Ini juga jauh lebih cepat dan memiliki lebih sedikit konflik menggabungkan karena kode dilacak sebagai set perubahan daripada revisi. Bacalah panduan hginit (ditulis oleh co-founder stack overflow) dan Anda akan memahami sedikit lebih banyak tentang apa itu DVCS. http://hginit.com/

Anda juga harus menggunakan repositori untuk ditempatkan, bukan rsync atau ftp.

Pengembangan Berbasis Tes Tergantung pada apa yang Anda lakukan, pengujian dapat menghabiskan banyak waktu. Saya tidak mengatakan Anda harus benar-benar melewatkannya, untuk proyek-proyek kecil itu overhead. Jika Anda menulis perpustakaan atau proyek jangka panjang yang besar, pastikan menulis tes untuk itu. Tes akan membantu dalam fase pemeliharaan. Ketahuilah bahwa TDD tidak dapat menemukan semua bug Anda. Akan ada masalah pengalaman pengguna, masalah tata letak, masalah kinerja dan sebagainya.

Debugging Xdebug pada dasarnya adalah satu-satunya pilihan Anda di sini. Ini terintegrasi dengan baik dengan Netbeans. Jika Anda merasa perlu untuk mencetak variabel, Anda harus menggunakan file log. Gunakan fungsi log kerangka kerja, ini jauh lebih aman dalam produksi.

Perencanaan / Diagram Jika Anda menggunakan kerangka kerja yang baik, Anda tidak perlu terlalu banyak membuat diagram rinci. Tetap sederhana dan bekerja dalam siklus rilis yang lebih pendek, mudah untuk membuat rencana yang berlebihan. Persyaratan dan spesifikasi suatu proyek dapat berubah sehingga saya tidak akan menghabiskan seluruh waktu Anda untuk itu. Ingatlah bahwa spesifikasi IS kode pada level paling detail.

Gunakan alat pelacak bug Anda (lihat di bawah) untuk memecah spesifikasi menjadi tugas yang dapat Anda tetapkan untuk anggota tim. Gunakan alat pusat untuk mendokumentasikan proyek, pelacak bug mungkin akan memiliki wiki.

Anda bisa menggunakan alat seperti Mysql Workbench untuk merancang skema basis data dalam diagram dan mengekspornya sebagai SQL.

Kerangka kerja dan OOP Ini mungkin bagian terpenting. Temukan sendiri kerangka kerja populer yang akan mendukung pengembangan cepat dan penggunaan kembali kode. Beberapa orang tidak akan suka saya mengatakan ini, tetapi kerangka kerja harus menentukan cara Anda bekerja. Ini harus menyediakan struktur sehingga satu pengembang dapat beralih proyek dan tahu persis di mana controller untuk halaman tertentu, persis apa variabel template dan bagaimana cara query model. Beberapa kerangka kerja memungkinkan terlalu banyak fleksibilitas di sini dan Anda akan menemukan bahwa pengembang tidak selalu menggunakan kerangka kerja dengan cara yang sama. Saya suka filosofi python; harus ada satu cara yang jelas untuk melakukan semuanya. Inilah sebabnya saya suka Django dan Rails, mereka cukup keras kepala dan ini berarti saya bisa melihat kode elses seseorang dan mengerti apa fungsinya. Symfony sepertinya pilihan terbaik di sini,

Ada banyak pertanyaan 'kerangka apa' pada stack overflow seperti ini: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

Pelacakan Bug Dapatkan tim Anda pelacak bug yang bagus yang dibuat untuk pengembang. Jangan menggunakan sesuatu yang disederhanakan seperti basecamp. Redmine dan Unfuddle adalah dua contoh pelacak bug yang sangat baik, mereka juga dapat melacak waktu dan berintegrasi dengan repositori Anda. Tim Anda harus menggunakan alat ini untuk berkomunikasi tentang masalah daripada email atau IM. Ini memudahkan pengembang baru ketika ada riwayat bug dan dokumen yang ada. Artikel ini menjelaskan dengan tepat apa yang perlu dilakukan oleh pelacak bug yang baik dan mengapa. http://www.joelonsoftware.com/articles/fog0000000029.html

Keyo
sumber
0

Saya akan merekomendasikan melihat Bazaar untuk kontrol versi. Dibandingkan dengan Git, ia memiliki keunggulan utama yang sebenarnya mudah digunakan dan diinstal pada Windows, Mac OS dan Linux. Juga perintah bzr sangat mirip dengan rekan svn itu, oleh karena itu seseorang yang telah bekerja dengan Subversion sebelumnya dapat dengan mudah menggunakan Bazaar tanpa banyak kurva belajar. Aku melihatmu, Git.

Selain itu saya sangat percaya pada tidak memaksa apa pun pada pengembang Anda. Beeing mengatakan biarkan mereka menggunakan IDE, sistem operasi dan sebagainya yang mereka sukai.

Selain itu saya sangat menyarankan Anda melakukan tes wirte untuk semua kode Anda, tidak peduli seberapa membosankan itu.

Keputusan untuk atau menentang kerangka kerja bukanlah sesuatu yang dapat Anda lakukan berdasarkan rekomendasi yang dibuat di sini. Saya sarankan Anda daftar yang terlihat menjanjikan kepada Anda berdasarkan fitur mereka dan kemudian menulis aplikasi uji kecil di setiap dari mereka. (Tuliskan yang sama setiap kali.)

pst
sumber