PHP web uygulamamın akışını takip etmiyorum, çalışmak zorlaşıyor


14

Birkaç yıldır programlıyorum ve zaman içinde C # ve JavaScript ile çok aşina oldum. Gezinmekte sorun yaşamadığım daha büyük bazı C # ve JavaScript projelerim var. Geçenlerde PHP ile daha önce hiç deneyime sahip olmayan bir PHP & AngularJS projesi başlattım.

Şeylerin PHP tarafının akışını takip etmek zorlaşıyor (JavaScript tarafı daha büyük, ancak çalışması kolay), denediğimde ve düşündüğümde karışık bir iplik topu hayal ediyorum. Başladığımda yaptığım büyük tasarım hataları birikmeye başlıyor ve tasarımımı ilerletmeye başlıyor. Yeni bir şey uygulamak daha uzun ve daha uzun sürer.

Sıkı bir son tarihteyim ve iyi, DRY, SOLID, kod yazmak daha zor ve zor. Tasarım süresi arttıkça davranışında küçük değişiklikler yapmak için kod parçalarını kopyalamak / yapıştırmak daha cazip hale geliyor. Ayrıca, bir bağlam anahtarı yapmak zorunda kaldığımda kod tabanına geri dönmek uzun zaman alıyor (bir projeden sonra bu projeye geri dönün), bu projede çalışmaya geri döndüğümde korkuyorum.

Bunu düzeltmek için hangi adımları atabilirim? Ekstra zamanın da haklı olması gerekir, patronum bir geliştirici değildir ve geliştirme veya yazılım yaşam döngülerine aşina değildir, bu yüzden açıklamak normalden daha zor olabilir.



1
Teşekkürler @gnat Ancak, sorunları kendim nasıl düzeltebileceğimi anladığımdan patronum için bir dava açmakla daha az ilgileniyorum. Sorunları tanımlamak ve değiştirmek için iyi bir yöntemsel yöntem bilmiyorsam patronuma dava açmak işe yaramaz.
Douglas Gaskell

Yanıtlar:


11

Teknik borç alıyorsunuz. Özensiz kodları son teslim tarihleriyle ne kadar fazla haklı çıkarırsanız, daha fazla teslim tarihi daha az ve daha az başarı elde ettiğinizi görür.

Bununla tamamen kurtulabileceğinizi anlayın. Kimse seni berbat edip yakalayamayacak. Sadece bir gün dağınıklıkla çevrili uyanıyorsun.

Bu noktada özgeçmişinizi güncelleyecek ve benim sorunum olacak veya borcu ödemeye ve kodu temizlemek için biraz zaman geçirmeye karar vereceksiniz.

Temizlik rutini giderseniz bunun "tasarım için daha fazla zaman harcamak" ile ilgili olmadığını anlamak. Bu, bazı tembel alışkanlıkları kırmak ve çöpü atmakla ilgilidir.

Kirli kod toptan atmak kötü bir fikirdir. İçine giren iş yüzünden değil, çalışma kodu bir fikir yakaladığı için. Kirli kodu çöpe atmadan önce fikri temiz koda taşıyın.

Birim testlerine sahip olmak buna yardımcı olur, ancak testlerinizi aynı özenle oluşturduysanız, karışıklığa koyduğunuzda muhtemelen düzeltilmesi gerekir.

Sertliğe kapılmayın. Eğer değiştiremezseniz yazılım değildir.


1
"Kimse seni berbat edip yakalayamayacak." ... Kod incelemesi yapmadığınız sürece. ;)
jpmc26

1
@ jpmc26 Kod yorumlarının sizi bu kaderden kurtaracağını düşünüyorsanız yanılıyorsunuz. Kod incelemeleri, yalnızca başkalarından öğrenmek istediğinizde size yardımcı olur. Son teslim tarihine odaklandığınızda değil. Çalışmak, dağınık, kod tekrar tekrar fikirleri koyacaktır. Yöneticilerin bu anlaşmazlıkları çeyrek geçerek çözdüğünü gördüm. Kaliteyi umursamıyorsanız, hiç kimse kalitenizi dışarıya çekemez. Dağınıklıktan kurtulmak için başkalarına güvenebileceğinizi düşünmeyin. Bu söz konusu olduğunda, sizi sadece belgeleri güncellemeye atayacaklardır.
candied_orange

Yorumumu okuduysanız ve kod incelemelerinin, herhangi bir çaba veya istek olmadan her şeyi düzeltecek tek boynuzlu atlar ve gökkuşağı gibi sihirli olduğunu söylediğimi düşünüyorsanız, inanılmaz derecede yanılıyorsunuz. Ama birisine seni çağırması için bir şans veriyorlar.
jpmc26

1
@ jpmc26 Cevabımı okursanız ve sadece vazgeçmek için umut olmadığını söylediğimi düşünüyorsanız, inanılmaz derecede yanılıyorsunuz. Bunu yapmak için herhangi bir sürece güvenmek yerine programcıları temiz kod için kişisel sorumluluk almaya çağırıyorum. Sadece bir şey önemlidir. Umurunda ya da umursamıyorsun.
candied_orange

Tabii ki, ama en iyi programcı bile ara sıra aptal kararlar verecek. Başka bir kişiyle yapılan kod incelemeleri, kodunuzu daha önce yakalayabilecek bir başkasının önüne koyma şansı verir. Bütün mesele bu . Bu var zor Aslında bir şey değiştirmeye çalışırsanız kadar başınıza sorun noktalar görmek ve onu zorlaşır. Elbette kod değerlendirmeleri ve diğer teknikler umursamıyorsanız işe yaramaz.
jpmc26

9

Yeni bir şey uygulamak daha uzun ve daha uzun sürer.

Bu sizin gerekçeniz. 'fess', biraz karga yiyin ve işlerin neden daha uzun sürdüğünü ve sistemi yeniden yapılandırmak + yeniden tasarlamak için biraz zaman harcamanız gerektiğini açıklayın.

Bunu yapmazsanız, aşağıdan aşağıya yavaş yavaş yeniden gözden geçirmeniz gerekir. Görevler zaten istediğinizden daha uzun sürüyor - daha iyi bir şey yapmak için kod tabanına her dokunduğunuzda biraz daha fazla zaman ayırın. Bir entegrasyon testi ekleyin. Bir soyutlama çıkartın.

"Büyük bir projeyi nasıl yeniden düzenlerim?" "Her seferinde bir parça" dır.

DÜZENLE

İlgili yayınları okuyordu ve bu blog yayınına rastladım: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : projenizde büyük bir refactor 'aşaması' yaratmaya çalışmayın; proje sahiplerinden satın alma olasılığı düşüktür ve sahip olduğunuz süre boyunca neyle başa çıkacağınız konusunda seçimleriniz konusunda yönlendirilmezsiniz . Bunun yerine, şu anda üzerinde çalıştığınız kodu temizlemek için her yeni değişikliğin veya hata düzeltmesinin zamanını alın. Onları düzeltme fırsatınız olduğunda kokuların etrafta dolaşmasına izin vermeyin.


3
Geçmişte miraslarımla tam olarak bunu yaptım. Güzel şey: dönüm noktasını aldıktan sonra, proje peri tozu gibi parlamaya başlar.
qwerty_so

-2

Sonarqube PHP'yi destekler, böylece mevcut borcunuzu ve yeni sızıntılarınızı takip etmenize yardımcı olabilirsiniz. http://docs.sonarqube.org/display/PLUG/PHP+Plugin

Drupal ile canlı örnek https://sonarqube.com/dashboard?id=drupal


1
Maalesef JVM'yi çalışma cihazıma yükleyemiyorum. Aksi takdirde harika bir araç gibi görünüyor.
Douglas Gaskell

Bu, bir geliştirici iş istasyonu için oldukça acımasız.
Arşimet Trajano

Yerel yönetici veya yükleme iznim yok veya beyaz listede olmayan uygulamalar için çalıştırma izinlerim yok. Eskiden çok daha kötüydü .... ne yazık ki.
Douglas Gaskell

Empati kurduğumu söyleyemem, yine de sempati duyuyorum.
Arşimet Trajano

OP'nin sorusuna bir cevap değil, sadece bir aracın reklamı / bağlantısı olduğu için indirildi.
James Snell
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.