Bu soruyla ilgili ciddi sorunlar görüyorum. Hadi başlayalım.
Mimari tasarım boşa zaman kaybetmeyi nasıl durdurabilirim
Bu soru oldukça dolu. Ayrıca, mimari tasarlamıyorsunuz . Sen mimar . Mimari ve tasarım tamamlayıcı ve ilgili faaliyetlerdir, ancak birbirleriyle çakışsalar bile aynı değildir.
Benzer şekilde, aynı zamanda mimarlık yaparak zaman kaybetmek de mümkündür (fazla mimarlık yaparak), fazla tasarlama ve fazla kodlama (atıkları gereğinden çok daha karmaşık bir şekilde kodlayarak) gerekli olan şeyleri kodlayın.)
Uygun mimarlık bu israfın kodlanmasını önlemeyi amaçlar. Bunu, karmaşık bir sistemin 1) tasarlanması, 2) kodlanması ve test edilmesi, 3) teslim edilmesi, 4) bakımı, 5) başarısızlıktan kurtarılması ve 6) sonuçta hizmetten kaldırılması muhtemel yollarını sınırlandırmak, daraltmak ve belgelemek suretiyle yapar.
Tecrübelerime göre, sadece kodlamadan hoşlanan insanlar, bir sistemin uzun vadede nasıl işletileceği ve sürdürüleceği, çirkin bir golem için bazı zayıf ruhlar bırakacak bir sonraki sıcak patatese geçeceklerini düşünmeden kodlarlar .
Ama dalıyorum ...
Mesele şudur: Yeterince basit sistemler için mimarlık açıktır ve sağlam tasarım ve uygulama uygulamalarından kaynaklanır.
Bu, yalnızca açık mimari gerektiren çok karmaşık işleri yapan çok sayıda insanı veya sistem düzeyinde yazılımı içeren büyük sistemler içindir.
Geçenlerde üniversiteden mezun oldum ve programcı olarak çalışmaya başladım. Teknik sorunları çözmeyi ya da hata ayıklamayı zor bulmuyorum, söyleyeceğim şeylerin 1 çözümü var.
Bu meslek için gereken asgari miktar budur ve onları yaparken sorun yaşamadığınız için mutluyum (Yaparsanız endişelenirim.)
Ancak tek bir çözümü olmayan bir problemler sınıfı var gibi görünüyor
Bunlar, mesleğimizin ekmeği ve tereyağı, işverenlerin (genellikle) ortalamanın üzerinde maaşlarının üzerinde ödemeye razı olduğu sorunlardır.
Nitekim, çözülmeye değer problemler birden fazla çözüme sahip olanlardır. Gerçek dünyadaki problemler böyle. Ve dünya, yazılım geliştiriciler olarak kabul edilebilir takaslar için uzmanlığımıza ihtiyaç duyuyor.
- yazılım mimarisi gibi şeyler.
Şeylerin mimarisi, sanal / yazılım ya da somut dünyada olsun, karmaşık sistemin kaçınılmaz bir özelliğidir. Çalışan, girdi alan ve çıktı üreten her sistem karmaşık olacak ve bir mimariye sahip olacak.
Bu tür sistemler için yazılım geliştirdiğimizde (bir bankacılık sistemi, bir güç izleme sistemi, bir bilet satış sistemi vb.), Böyle bir sistemin işlevlerini ve gereksinimlerini taklit eden bir yazılım parçası üretmeyi hedefliyoruz .
Biz sadece olamaz sadece kanat onu ve kod kovboy tarzı. Bir çeşit mimariye ihtiyacımız var. Bu özellikle eğer proje değilse, onlarca mühendis gerektiriyorsa geçerlidir.
Bu şeyler beni kandırıyor ve büyük sıkıntıya neden oluyor.
Sorun değil. Çok fazla pratik yapmadan, öğrenmesi veya öğretmesi kolay bir konu değil.
Programlarımı ve sistemlerimi nasıl "geliştireceğime" karar vermek için saatlerimi harcadım. Örneğin, bu mantığı 1 veya 2 sınıfa böldüm, sınıfları nasıl adlandıracağım, bu özel veya herkese açık hale getirebilir miyim, vb. Sadece programı oluşturmak istiyorum, mimarlık lanet olsun.
Ne yazık ki, bu yazılım mimarisi değil.
Bu tasarım bile değil, sadece kodlama. Bu yazının altında bazı önerilerde bulunacağım.
Mimarlık aşamasından ve zevk aldığım kodlama ve hata ayıklama aşamasına nasıl daha çabuk geçebilirim ?
Buna cevap vermenin bir yolunu bulmakta zorlanıyorum, çünkü oldukça duygusal.
Bir işi halletmeye mi çalışıyoruz, yoksa sadece uygulamadan zevk almaya mı çalışıyoruz? İkisi de aynı olduğunda harikadır, ancak gerçek hayatta çoğu zaman değildir.
Sevdiğimiz şeyleri yapmak harika, ama bizim gibi karmaşık bir meslekte, sadece zevk aldığımız şeye odaklanmak, verimli bir kariyere sahip olmak için elverişli değil.
İlerlemeyeceksin, olgunlaşmayacak veya yeni bilgi edinmeyeceksin.
Orduda, "emişi kucakla" diyen bir söz var.
Diğer ifadelerin benzer önerileri vardır. "Emmezse, buna değmez" ve favorim, "Emerse (ve önemliyse), emmeyi bırakana kadar yapın."
Önerilerim:
Bana göre hala arasındaki farkları anlamakta zorlanıyorsunuz.
kodlama (sınıflarınızı, modüllerinizi nasıl kodlayacağınız ya da olmayanları, adlandırma kuralları, erişim görünürlüğü, kapsam vb.),
tasarım (kaç katman, ön uç / arka uç / db, her birinin nasıl iletişim kurduğu, neyin nereye gittiği) ve basit sistemlerin tasarımından gelen örtülü mimarlık kararları,
mimarlık (yüz binlerce insan-saati olmasa da binlerce gerektiren karmaşık sistemlerde bulunur.)
Bu yüzden, onu bir sonraki seviyeye çıkarmak için ilk konuya derinden dalmanızı (kodlama) öneririm.
Temiz kod
Robert "Bob Amca" Martin "Temiz Kod" başlamak için iyi bir yer.
Yazılım Uyum
Ek olarak, LCOM veya LCOM4 adı verilen belirli bir Nesne Yönelimli yazılım metriğini tanımanızı öneririm.
Oldukça matematiksel olabilir ve kurşun geçirmez değildir, ancak amacınız bir sınıfın uyuşup uyuşmadığını veya uyuşmadığı durumlarda ampirik olarak anlamak ve tespit etmek (ya da isterseniz top-göz) olmalıdır.
http://www.aivosto.com/project/help/pm-oo-cohesion.html#LCOM4
https://www.computing.dcu.ie/~renaat/ca421/LCOM.html
Yazılım İlkeleri
Bu , hepimizin bilmesi gereken "Tek Sorumluluk İlkesi" veya SRY ile yakından ilgilidir . SRY, kodlama konusunda uzman olmamız durumunda aşina olmamız gereken 5 "KATI" dan biridir .
SOLID ilkeleri arasında ilerlerken, kendimizi de sınıfları nasıl kodladığımızı yöneten veya daha doğrusu yönlendiren "GRASP" ilkeleriyle tanıştırmamız gerekir .
Ek Kitaplar
Son olarak, aşağıdakileri de öneriyorum:
Martin Fowler ve Ken Beck tarafından "Refactoring" bu listede okuduğum bir sonraki kitap olacak.
Richard Mitchell, Jim McKim ve Bertrand Meyer (Eiffel'in şöhretinin ardından) tarafından "Sözleşmeye Göre Tasarım" . Bu kitap basılmamış, ancak Amazon'da ucuz, kullanılmış kopyalar bulabilirsiniz.
Bununla, kodlama ve tasarımın nasıl başlatılacağına ve uygulama ile yazılım mimarisinin nasıl taşınacağına (veya en azından kavradığına) pratik uygulama konusunda iyi bir anlayışa sahip olmalısınız.
Bu önerilere ekleyen, çıkartan veya itiraz eden başka profesyoneller olacağından eminim. Kendi önerileriyle doğrulanmış başka önerilerde bulunacaklar.
Söyleyebileceğim tek şey bu - kısayol yok.
Herşey gönlünce olsun.