Nesneye yönelik analiz ve tasarımda nasıl iyi olunur (OOAD)?


26

İyi bir analizör ve tasarımcı olmak bir geliştiriciden büyük ölçüde faydalanabilir. Ancak bunun için kesinlikle engeller var. Herkes OOAD ile ilgilenmiyor ve ilgilenen herkes yolu bilmiyor. İyi bir OOAD çoklu OO dillerini bilmeli mi? Yoksa başarısız projeleri mi? Kişi nasıl iyi bir OOAD olabilir?

Yanıtlar:


34

İlgilenmeyen insanlar kendi engellerini yaratıyorlar. Bunun için endişelenemiyorum.

Yolu bilmeyenler için şunu öneriyorum:

  • Öğrendiğim her OO dilinin beni daha iyi bir OO geliştiricisi yaptığını biliyorum. Topluluğu bulduğunuz sürece, her dilden başkalarına birçok şey getirilebilir.
  • Başarısızlıktan başarıdan ziyade daha fazlasını öğrenirsiniz, ancak bunu kendi zamanınızda yapmaya çalışın. Profesyonel olarak, daha fazla deneyime sahip olanlara, en azından bir kısmı için - ancak "Neden?" Diye sormaktan çekinmeyin.
  • SOLID ilkelerinin beşini de öğrenin ve neden var olduklarını anlayın. Hiçbiri kural değil, fakat kaybolduğunuzda iyi kurallar.
  • Test Odaklı Gelişim, OO tasarım becerilerimde öğrendiğim her şeyden daha fazla bir gelişme gösterdi.
  • En az mühendislikten en az mühendisliğe geçip daha sonra doğru dengeyi bulana kadar en iyisi olmayacaksınız.
  • Aslında, tırmalamak, asla iki yıl sonra olacağın kadar iyi olmayacak
  • Birçok kitap ve blog okuyun, ancak hiçbir şey İncil olarak kabul etmeyin. Bu endüstri hala mükemmel bir yol bulamadı ve asla bulamayacak.
  • Elbette tasarım kalıplarını öğren, ama onları kullanacak yerler aramayın, onları iletişim için kolaylaştırıcı olarak kullanın.

Bazıları yardımcı olur umarım.


1
İyi liste +1
Saeed Neamati

5
+1 "hala mükemmel bir yol bulamadı ve asla bulamayacak."
ocodo

1
+1 "Test Odaklı Gelişme, OO tasarım becerilerimde öğrendiğim her şeyden daha fazla gelişme sağladı."
kevin cline


Teşekkürler SOLID tartışma programına
LCJ

5

Ben amacıyla düşünüyorum tamamen takdir OO modeli, deneyim olmayan OO programlama teknikleri ile sefil başarısız olması gerekir. OO'nun içini ve dışını anlayabilirsiniz, ancak takdir etmek ve saygı duymak için, işi tam olarak yapmayan eski paslı olanın yerini alan yeni ve parlak bir araç olması gerekir.

Üniversite düzeyinde Java'da OO öğrenmeden önce kendimi 7 yıl boyunca kendim öğrendim. Ondan önce sürekli olarak bu projeleri inşa ederdim ve o kadar büyürlerdi ki, haltların neler olduğunu unutacağım. Hacimli, örgütlenmemiş ve küçük değişiklikler yapmak için çok fazla bakım gerektireceklerdir . Temelde kodumla takılmaya başladığımı ve sürekli yeni başlamamı sağlamaya devam ettim.

Kafamı benim kabul ettiğim lineer tasarımdan çıkarmak biraz zaman aldı, ancak bir kez OO modelini tam olarak anladığımda Eureka gibiydi! Kalıtım gibi kavramları öğrendikten sonra kendi başıma çok daha karmaşık projeleri kodlayabildim ve üretkenliğimi çatıdan attı. Yeniden kod yazmak veya baştan başlamak için zaman harcamıyorum, çünkü nesnel olarak her şey mantıklı ve sezgisel.

Bence her programcının olabildiğince çok dil bilmesi gerekir. Bu, OO olup olmadığına bakılmaksızın, onları daha deneyimli bir gazisi yapacaktır. Bir kere OO'yu anladığınızda, bu teknikleri alabilir ve uygulandıkları her yere uygulayabilirsiniz.

IMHO, eğer anlamadıysanız veya OO öğrenmek istemiyorsanız, yaşamın savaş alanında yetersiz donanıma sahip olacaksınız. Giderek daha fazla şirket daha yeni OO dilleri kullanıyor. Ben herhangi bir neden göremiyorum değil OO modeli çağında bu gün biliyoruz.

Kişinin nasıl öğrendiğine bağlı olarak, modeli nasıl öğrenmek istedikleri onlara bağlıdır. Birisi bana ders verdiğinde şahsen en iyisini öğreniyorum ve bu yüzden Java I ve Java II için sınıfa gitmek benim için gerçekten büyük bir fark yarattı. Üniversite dersleri için yazılım mühendisliği seçmeli dersleri almanızı veya kolej kurslarına erişiminiz yoksa ya da boş zamanlarınızda öğrenmek istiyorsanız sadece çevrimiçi olmanızı ve OO eğitimlerini aramanızı öneririm.

Bana nasıl anlatıldığını tekrar düşündüğümde; bir elma bir elmadır ve bir portakal da bir portakaldır. Evet, ikisi de ağaçlardan düşer, ancak ikisi tamamen farklı meyvelerdir ve uyumunuz vardır.


1
İşlevsel programlama ile sefilce başarısız olmak veya prosedürel programlama ile sefilce başarısız olmak mı demek istediniz?
Andrew Grimm

İşlevsel programlama ile sefilce başarısızlık, ancak ustalıkta başarısızlık. Kısıtlamalar nedeniyle başarılı uygulamada başarısız olmak demek.
Styler

Yani kesinlikle işlevsel programlamayı kastediyorsunuz, prosedürel programlamayı değil mi?
Andrew Grimm

OO dışı programlama.
Styler

2
Bunu düzenlemeyi kesinlikle tavsiye ederim, çünkü OO! Her iki şey de olabilir.
Magus

0

İlgilenenler veya ilgilenmeyenler için her zaman engeller vardır, ancak bağlam ve ciddiyet değişebilir.

OO kavramları için çoklu dil öğrenmek zorunda değilsin, istediğin bir dille başla, bir süre boyunca dil üzerinde güçlü bir yer elde edeceksin, bunu yaptıklarını keşfetmek için mümkün Zaten ve aynı dili farklı bir dilde çalıştırmayı deneyin. Bir dilde uzmanlık, derecelendirmeye bir kıyaslama yapacağınız için yenilere geçmenize yardımcı olur.

Herhangi bir proje başarısından ziyade önemli olan bir öğrenme deneyimidir, özellikleri en iyi kullanımınız için ne kadar iyi uyarladınız, bazen başkalarının kodunu okumak ve bunun nasıl ve neden yapıldığını bulmak iyi olur. Bir akıl hocası bulabilirseniz çok iyi olur. Nedenini daima bilin. Neden bu seçilmiş ? Kendi mantık ve tasarım modeliniz üzerinde çalışmaya çalışın ve onu kıdemli / akıl hocanıza fırlatın. Bu yolla becerilerinizi geliştiriyor olabilirsiniz, belki de başlangıçta doğrudan çöp kutusuna giderlerdi ama sonra neyi yanlış yaptığınızı öğrendiniz ve öğrendiniz. Tekrar tekrar daha iyi ve daha iyi olurdun.

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.