Kod tabanımı nasıl planlamalıyım? [kapalı]


10

Şu anda 5.000'den fazla kod satırına ulaşmak üzere bir proje üzerinde çalışıyorum, ancak tasarımı gerçekten hiç düşünmedim. Kodumu yapılandırmak ve düzenlemek için hangi yöntemleri kullanmalıyım? Kağıt ve kalem? UML diyagramları? Başka bir şey?


hangi dil ?

Kalem ve kağıt değil. Klavye ve monitör.
Tulains Córdova

Yanıtlar:


6

Muhtemelen cevaplar kadar farklı görüşe sahip olursunuz. Ama işte benim bakış açım.

Yeni başlayanlar için 5000'den fazla kod satırı çok küçük bir projedir. Şimdi, büyüyen projeler tasarlamaya nasıl gidiyorsunuz? Öncelikle sisteminizi bir kod değil, tasarlarsınız. Kod aslında mimariye ikincil. Minimum akım gereksinimlerini destekleyerek başlayın. Bazı bileşenlerin basit çizimini yapın. Şahsen UML'yi seviyorum, ancak görsel olan her şey iyi olacak. İdeal olarak, burada iyi tasarım uygulamalarına (arayüzler, endişelerin ayrılması vb.) Bağlı kalmak istersiniz.

Tasarımınızda minimum gereksinimleri destekledikten sonra kodlayın. Yine, iyi kodlama uygulamalarına uymaya çalışın.

Bundan sonra, yeni gereksinimler ortaya çıktıkça tekrarlı olarak daha fazla işlevsellik ekleyin. İdeal olarak tasarımınızı da güncellemek istersiniz.

Deneyimlerime dayanarak önemli olan, sisteminizi mevcut olmayan gereksinimleri öngörerek tasarlamamaktır. Aksi takdirde projeniz çok hızlı büyür ve kısa sürede çok karmaşıklaşır. Yine - iyi uygulamalara uyun ve mevcut somut gereksinimlerle başlar.


"Potansiyel" değil, "perspektif" demek istediğinize inanıyorum. (Altı karakterden az olduğu için düzenleme
yapamıyorum

4

Akış Diyagramı, Sınıf Diyagramı, Kullanım Durum Diyagramı büyük projeler için olmazsa olmaz diyagramlardır. Hangi harici kütüphanelere ihtiyacınız olduğunu arayın ve seçin ve kullanabileceğiniz benzer açık kaynak kodlarını arayın (geliştirme zamanını öğrenmek ve azaltmak için).

Bir beyaz tahta ve bazı renkli mıknatıslar ve Post-It satın almanızı öneririm. Görevlerinizi tanımlamanıza yardımcı olacaktır.

ps 5000+ kod satırı "büyük" değildir. Bir CMS / Forum yazılımı 5000'den fazla kod satırına sahiptir.


Ciddi soru: kullanım senaryosu diyagramı ne işe yarar? Gördüğümlerin hepsi, zaten bilmediğim bir şeyi söylemeyen acı verici önemsiz sopa figürü ve balon çizimleri oldu.
Joris Timmermans

1
MadKeithV - herhangi bir araç gibi, sadece onları kullanan kişi kadar iyidir. Acı veren önemsiz vakalardan kaçınmaya çalışın ve daha karmaşık durumlara konsantre olun. Ancak, önemsiz bulduğunuz şey, takımdaki diğerleri olmayabilir. Bir kullanım senaryosu veya başka bir şema herkesin aynı ilahi sayfasından şarkı söylemesini sağlamaya yardımcı olacaktır.
Gavin Coates

@Gavin Coates - Söylediklerinizi anlıyorum ama bu diyagramlar hakkındaki düşüncelerimi gerçekten etkilemek için bakabileceğim herhangi bir çevrimiçi örnek biliyor musunuz?
Joris Timmermans

3

Paket ve sınıf diyagramları oluştururdum. Paket şemasında, sınıfları ve arayüzleri mantıklı bir şekilde gruplandırmak istiyorum. Ayrıca iç paketler vs oluşturmak istiyorum ...

alternatif metin

Ama önce programın ne yapması gerektiğini düşünmelisiniz. Usecase diyagramları oluşturabilir veya manuel olarak yapabilirsiniz. Sınıf diyagramı ile manuel olarak yapıyorum çünkü kodu hemen almayı tercih ediyorum ve daha sonra sınıf diyagramlarına takas etmek daha kolay. Sınıf diyagramını kullanmak bana java'mı verir. Eğer beğenmediysem manuel olarak değiştiririm. Yeni kod diyagramlarıma otomatik olarak güncellenir. Kodumun görsel yüksek düzeyde güncellenmiş bir temsili var. Gerçekten yararlı çünkü kodlasam bile projemin grafiksel yoluna bakmak için her zaman birkaç dakika alabilirim. Düzenlemek için doğru paketteki objeleri manuel olarak sürükleyip bırakıyorum. Kodumun daha yüksek düzeyde soyutlama paketi ve sınıf diyagramları kullanarak daha iyi olduğunu düşünüyorum.

alternatif metin
(kaynak: ejb3.org )

Meslektaşlarımdan bazıları çalışma şeklimin saçma olduğunu söyledi ... ama hoşuma gitti :-)


2

Kesinlikle. Bu tür bir şey için kullanmak için küçük bir "tablet" kuru silme kartı var, ama ne olursa olsun rahat kullanın. Önemli olan, düşüncelerinizi kolayca düşürebilmeniz ve her şeyin birbirine nasıl uygun olduğuna dair büyük resmi görebilmenizdir.

Bazı insanlar UML diyagramları gibi daha resmi planları tercih ederler, ancak her yöntemin neye benzemesi gerektiği konusunda mikro yönetime yakalanmanın çok kolay olduğunu hissediyorum. Yine de, rahat ettiğiniz her şeyi kullanın.


EDIT: Okuryazar programlama ile de ilgilenebilirsiniz . Fikir, her şeyi planlayabilmeniz ve yavaş yavaş daha spesifik olmanızdır. Örneğin, programınızın aşağıdakilerden oluştuğunu söyleyebilirsiniz:

  1. Kullanıcıdan metin alma
  2. Metni bir görüntüye dönüştürme
  3. Ortaya çıkan görüntüyü diske kaydetme

Ardından, metni bir resme dönüştürme fikrinizi hassaslaştırabilirsiniz. Yani bu şöyle görünebilir:

  1. Metnin alması gereken satır sayısını belirleme
  2. Metin ve arka plan için rastgele renkler seçin
  3. Uygun bir biçimde işleyin

O zaman rastgele renkler seçme fikrini geliştirebilirsiniz ve yakında sadece normal kod yazıyorsunuz.


2

Benim için, yazılım geliştirmenin faaliyeti, belirli bir sorunu çözmek için aşamalı olarak daha ince taneli bir dizi tasarımdır. Ne yaptığınıza dair üst düzey bir fikriniz olduğunda, tasarımınız çok yüksek bir şey olabilir, örneğin "bir SQL veritabanıyla ve birden çok web hizmetiyle konuşan bir web uygulaması olacak" veya bunun gibi bir şey olabilir. Daha sonra, her parçanın detaylarını incelerken tasarımda daha ince taneli olursunuz. Çözümün karmaşıklığına bağlı olarak, tasarım çabasının az ya da çok yinelemesi olacaktır. Son yineleme, tasarımın daha yüksek düzeylerini uygulayan gerçek kodu oluşturmayı içerir.

Benim için, mimari ve tasarım arasındaki fark minimaldir ve bunlar yukarıda tarif ettiğim sürecin sadece farklı iterasyonlarıdır. İkisi arasındaki çizgi bulanık ve farklı insanlar için farklı.

Hangi düzeyde tasarım detayının girileceğine, uygulamanın hangi bölümlerine ve proje yaşam döngüsünün hangi noktalarına gidileceğine karar verme sanatı vardır. Yüksek riskli, yüksek karmaşıklıkta projeler için, bir kod satırı yazmadan önce çok ayrıntılı bir tasarıma sahip olmak isteyebilirsiniz. Daha küçük projeler için, çok az ön tasarım yapmak ve sadece bazı kodları patlatmak ve neyin işe yaramadığını görmek ve bu alanları yeniden tasarlamaktan kurtulabilirsiniz. Burada sadece bir cevap yok. Genellikle bu iki uç arasında bir yerdedir.

Mimariye yaklaşırken kullandığım bazı ilkelerden bahseden bir blog yayınım var. Bu çizgileri düşünürken size yardımcı olabilir. Makalenin bazıları .NET'e özgüdür, ancak çoğu değildir.


2

Aynı soruyu kendime soruyordum. Şimdi sadece test odaklı geliştirme uyguluyorum ve bunun için endişelenmeyin. Seçilen mimarinin standartlarına uymak dışında kodu hiç "planlamıyorum". Bir projeye başladığımda neye ihtiyaç duyulacağına dair bir fikrim var, ancak geliştirme ilerledikçe açık fikirli olmaya çalışıyorum. Test güdümlü gelişimi takip ederek ve kodu sürekli olarak yeniden düzenleyerek, kodu "planlamak" zorunda değilim. Bir test senaryosunu birbiri ardına tatmin ediyorum ve tasarım yeniden düzenlemeden ortaya çıkıyor. Bu her zaman kodlamadan önce yapabileceğim tüm planlardan daha iyi bir tasarımdır.

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.