Uygulamayı Tamamlamada Yansıtıcı veya Konsantre


23

Uygulamanızı giderken yeniden değerlendirir misiniz yoksa önce uygulamayı tamamlamaya odaklanır mısınız? Yeniden düzenleme, uygulama uygulamasının ilerlemesinin yavaşlayacağı anlamına gelir.

Uygulamayı tamamlamak, daha sonra uygulamayı korumak için muhtemelen çok zor olacağınız anlamına mı geliyor?

Uygulamaya kişisel bir projedir. "İşlevsellik ve tasarımı neyin yönlendirdiğini" nasıl cevap vereceğimi bilmiyorum, ama sanırım mevcut yazılımdaki yetersizlikleri çözüyor. Ben de kullanımı kolay minimal yazılımı seviyorum. Bu yüzden bazı özellikleri kaldırıyorum ve yardımcı olacağını düşündüğüm bazılarını ekliyorum.


1
Senaryonuz hakkında bazı ek veriler verebilir misiniz? Mesela tek kişilik bir proje mi yoksa takımda mısın? Ticari bir ürün, şirket içi veya açık kaynaklı mı? İşlevsellik ve tasarımı yönlendiren şey nedir?
mlschechter

@mlschechter, şu anda aslında kişisel bir proje üzerinde çalışıyorum. Satıp satmayacağımı (örn. Kodekonyonda) ya da açık kaynağı serbest bırakmaya karar vermedim. "İşlevsellik ve tasarımı neyin yönlendirdiğini" nasıl yanıtlayacağımı gerçekten bilmiyorum, ancak bunun mevcut yazılımdaki yetersizliklerini çözdüğünü tahmin ediyorum. Ben de kullanımı kolay minimal yazılımı seviyorum. Bu yüzden bazı özellikleri kaldırıyorum ve yardımcı olacağını düşündüğüm bazılarını ekliyorum
Jiew Meng

Yanıtlar:


23

Çalışmasını sağla. O zaman hızlı yap. Sonunda güzel yap.

Arabirimler kullanarak kodunuz (sunum, işletme ve veri katmanları) arasında iyi bir ayrım varsa ve bu yekpare bir tasarım değilse, yeniden yapılanma o kadar zor olmamalıdır.

Yeniden yapılanma konusunda çok fazla zorlanıyorsanız, bu muhtemelen bir kod kokusu - Katı İlkelere bakmanızı öneririm


Çalışması için +1 . O zaman hızlı yap . Sonunda güzel yap .
Karthik Sreenivasan

Benim de amacım. Tasarımınızın görevi tamamlamanızı engellemediğinin farkında değilseniz çalışmadan önce refactor yapmayın.
Gus

Sadece doğru olanı yapmak yerine, gerçekten çalıştığından emin olmak için ünite testi kullanarak çalışırsanız , bu testlerin neden olduğu yapı, yapmak istediğiniz yeniden yapılandırmanın% 90'ı olacaktır.
Michael Anderson,

Söylemek isterdim: Çalışmasını sağla, doğru yap, hızlı yap - bu sırada.
Niklas H

Daha çok gitmek isterdi: Çalışmasını sağla, hızlı yap , tekrar çalış , güzel yap , tekrar çalış . Bu noktada tekrar hızlı hale getirmeniz gerekiyorsa, yanlış yaptınız.
Florian F,

8

Bence asıl mesele arayüzleri temiz tutmak . Aralarındaki iletişim katmanları akıllıca olduğu sürece, modül / sınıf / sonraki uygulamalarda her zaman yeniden yapılandırabilir veya yeniden yazabilirsiniz. Neyin daha sonra neyin değişip neyin değişmediğini bulmak için biraz zaman harcayın. İkincisi doğru yapın.

Bu TDD'nin ruhuyla tutarlıdır. İyi testler yazmak için, test etmek için iyi bir arayüze ihtiyacınız var. Şu an sahnelerin ardında ne kadar karışık olduğu o kadar önemli değil, çünkü daha sonra geliştirebilirsiniz.


5

Her zaman gittiğim gibi, özellikle TDD'yi kullanarak yeniden ateşleniyorum.

  1. Testleri yaz

  2. Testleri geçmek

  3. Elden Geçirme

Bu, bitmiş ürün için daha az hataya ve daha iyi kod elde etmenize yardımcı olacaktır. Ayrıca, işiniz bittiğinde korumak için daha az kodunuz olmasını da sağlar.


5

Refactor erken ve sık! Bunu yapmadığınızdan "tasarruf ettiğiniz" zaman, bir sonraki özelliği kırmaya çalışmak ve aşırı karmaşık veya kaotik bir kodda hataları aramak için harcanır.


2

Yeniden düzenleme, odanızı almak gibidir.

İşleri düzenli tutarsanız, algoritma teriminde O (n) kodunda yaptığınız üretken iş miktarıyla orantılı olarak doğrusal bir ek yükünüz vardır. Zamanınızın% 10'unu yeniden düzenleyerek (veya odanızı düzenli tutarken) harcadığınızı varsayarsak,% 10'luk bir değer verilir ve zamanla sabit kalacaktır.

Bununla birlikte, kirli çamaşırlarınızı bir köşeye atarsanız ve yapmaya devam ederseniz, odayı toplamak için harcayacağınız süre artar, karışıklık daha karmaşık hale gelir. Kirli çamaşır katkı sağlar, her bireysel parçası katlanarak gerekli temizleme süresi için, bir O (e şimdi olduğu varsayılarak , n ) bir durum.

Algoritmik karmaşıklık kavramına daha önce dalmış olan herkes, bir yerlerde bir kırılma noktası olduğunu, yani biriktirilecek en uygun miktarda kirli çamaşırın olduğunu gözlemleyecektir; Bunun ne kadarı büyük O notasyonunda atılan sabit faktörlere bağlıdır. Diğer bir faktör, zamanla işinizin değeridir: işiniz şimdi çok değerliyse, ancak gelecek hafta ucuza gelirse (yani, bu proje için bu cuma günü ve üç tane daha var, ancak bundan sonra boşta kalacaksınız) ), denklem yeniden yapmamak lehine sonuçlanabilir.

Ve sonra karmaşıklık kritik kütle var. Bir noktada, karışıklık ('kritik karışıklık', eğer istersen) o kadar kötüleşir ki, tüm odayı yakıp yeni kıyafetler almak daha kolay olur. Gerçekte genellikle değildir, ancak öyle gözükmektedir ve psikolojik etkiler olayla baş etmeyi on kat daha zor hale getirecektir.

Ve açıkçası, eğer zaten dev bir çarpma gereksizliği olan bir projeye adım attıysanız, sınırlı bir seçeneğiniz vardır.

TL; DR: Şüphe durumunda, refactor. Yapmamaya karar vermeden önce gerçekten iyi bir kanıtın olmalı.


1

Olması gerektiğini düşündüğünüz yerde satış / müşteri memnuniyetini sağlamak için özellikler ekleme veya hataları ezme şansınız varsa bunu yapın. Daha az yeni talep olduğunda, refactoring ile dengeleyebilirsiniz. Bir noktada insanların istediği kodu yazdığından emin olmalısın. Her şey eşitken, 1000 saatten 100 saat boyunca bir kod atmayı tercih ederim. Kimse istemezse ne yaparsınız.


0

Nerede olduğunuza gerçekten bağlı!

Düşünülmesi gereken diğer şeyler:

Ne kadar eminsin, gerçekten işlevsel tasarım hakkın var mı? Bazı kullanıcı geri bildirimlerini aldıktan sonra tekrar yeniden tasarım yapabilir misiniz?

Yeniden yazmak yerine bırakmayı tercih ederim. İşlevsel tasarıma çivilediğinizden eminiz.


0

Sürece olduğun gibi emin emin istediğin kadar planı ayrı süre karşılayabilir. Bununla birlikte, biraz daha fazla belirsizlik olsa bile, gelişime ayak uydurabilmek daha iyi olabilir ve yalnızca mütevazi adımda refactor olabilir.


0

Yeniden yansıtıcı yapmak istediğiniz kötü tasarım sizi gerçekten incitiyorsa, ona bağlı daha fazla kod oluşturmaktan daha iyi bir şekilde düzeltebilirsiniz. Sonradan yeniden yapılanma daha zor ve daha pahalı olur; Muhtemelen, artık yapamayacaksın.

Öte yandan, tek sorununuz çirkinlikse, önce yazılımınızı tamamlamak isteyebilirsiniz, çünkü hiçbir şey bir şeyleri halletmekle zorlaşmaz .


0

Başvurunuzu tamamlamak için çalışırken yeniden yenileme işlemi çok önemli olacaktır.

+ VES

  1. Akışı Temizle: Yeniden düzenleme, kodun netliğini sağlar çünkü bazen kod çok az yapılandırılırsa, bir süre sonra kodun akışını anlayın, zorlaşır ve yeniden düzenleme kodu yokuş yukarı bir görev haline gelebilir ve hatalar ortaya çıkabilir.

  2. Performansı iyileştirin: Uygulamanın doğru şekilde yeniden yapılandırılması kesinlikle uygulama performansının iyileştirilmesine yardımcı olacaktır .

  3. Bakım: Son fakat en az olmayan , uzun vadede bakımı daha kolay olacaktır .

-ve

  1. Zaman Tüketmek: İlerlemenizin her aşamasında çok daha fazla zaman harcar. Böylece tamamlamada bir gecikme olabilir .

Alt çizgi

Proje türüne bağlı olarak , mevcut durum için hangisi talep ederse kod kalitesine veya tamamlanmasına öncelik verebilirsiniz .


VES ve VE nedir?
FreeAsInBeer 18:14

olumlu ve olumsuz.
Florian F,

0

Kişisel tecrübelerime dayanarak, genellikle ilk olarak ulaşılması gereken bir son tarih olması koşuluyla uygulamaları bitirmeye giderdim. tamamladıktan sonra yeniden ateşleyebilirsin.

Bitir ve yeniden yansıt. Ancak acele veya zaman dilimi için son tarih yoksa, yeniden düzenlemenin iyi olacağını düşünüyorum.

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.