Yazdığım kodun kolay anlaşılmaması nedeniyle, yıllar önce az daha bir sınavdan kalıyordum. Öğretmenim kodun beklendiği gibi çalıştığını biliyordu ama, açıkçası kodu okurken içinde kaybolmuştu. Bana da ders olsun diye mümkün olan en düşük notu vererek geçmemi sağlamıştı. Ben de böylece dersimi almıştım. Yazdığınız kod kendinden bekleneni yapıyor olabilir ama, aynı zamanda tam bir çöp parçası da olabilir. Bilmem anlatabildim mi!


Herkesin kendine göre belirlediği en iyi programlama standartları ve pratikleri olabilir ama, en azından hepimiz belli başlı standart ve pratikleri takip edip, kodumuzun herkes tarafından kolay bir şekilde anlaşılmasını, zorlanmadan değiştirilmesini vs. sağlayabiliriz. Standartlar ve pratikler kişiden kişiye değişir, bu nedenle ben size kod yazarken nelere dikkat ettiğimi burada listeleyeceğim.


Benim listem


Bazı malum noktalarda ufakta olsa biraz esneklik payı var, bu nedenle kendimi aşırı derecede zorlamıyorum. Eğer esneklik payı sıfır olur ise, o işten zevk alamazsınız. Sonuçta program yazıyoruz, dünyayı yeniden keşfetmiyoruz. Ayrıca bazı noktalar framework bağımlıdır.


  1. Kesinlikle PSR-2 Coding Style Guide'i takip ederim.

  2. TDD (Test Driven Development) framework olarak PHPUnit ve PHPspec kullanırım

  3. BDD (Behavior Driven Development) framework olarak Behat kullanırım.

  4. Yazdığım kodu Semantic Versioning mantığı ile versiyonlarım.

  5. Methodlar da en fazla 5 parametre kullanırım.

  6. Bir class içinde en fazla 15 method tanımlarım.

  7. Bir method içinde en fazla 25 satır kod yazarım.

  8. İş sorumluluğunu azaltmak için, "public" methodları mümkün olduğunca "private" methodları kullanacak şekilde ayarlarım.

  9. Uygulamalarımda God object yaratmamaya dikkat ederim.

  10. Prensip olarak DRY, SOLID ve Law of Demeter'i uygularım.

  11. Kodu analiz edip PSR gibi kod standart hatalarını bulup düzeltmek için PHP-CS-Fixer veya PHP_CodeSniffer kullanırım.

  12. Kod içerisinde muhtemel kod hatalarını veya kötü kokan kodları bulmak için PHP Mess Detector kullanırım.

  13. İsminden de anlaşıldığı gibi PHP Copy/Paste Detector kullanırım.

  14. Uygulamanın büyüklüğünün tespiti için phploc kullanırım.

  15. Gereksiz şeyleri "bir gün lazım olur" diye uygulamalara eklemem çünkü You aren't gonna need it.

  16. Worse is better'in doğru bir şey olduğunu biliyorum.

  17. Uygulama geliştirirken Agile methodlarını kullanırım.

  18. Her zaman GIT kullanır, git-flow ve branch modelleme tekniğini uygularım.

  19. Kodlarımı her zaman refactorisation işlemine tabi tutarım.

  20. Kodlamaya başlamadan önce ve kodlama sırasında ERD ve UML modelleme tekniklerini kullanmaya özen gösteririm.

  21. Cargo cult programming hiçbir zaman tavsiye etmeyeceğim bir şeydir.

  22. Tüm UI ve UX işi yapan kişilerin Principle of Least Astonishment'i anlamaları gerektiğine inanıyorum.

Bilinmesi gereken ilginç bilgiler