Bagaimana menjadi ahli dalam analisis dan desain berorientasi objek (OOAD)?

26

Menjadi analis dan perancang yang baik dapat sangat bermanfaat bagi pengembang. Tapi pasti ada kendala untuk ini. Tidak semua orang tertarik pada OOAD, dan tidak setiap orang yang tertarik, tahu jalannya. Haruskah OOAD yang baik tahu beberapa bahasa OO? Atau haruskah dia gagal dalam proyek? Bagaimana seseorang bisa menjadi OOAD yang baik?

Saeed Neamati
sumber

Jawaban:

34

Orang-orang yang tidak tertarik menciptakan hambatan mereka sendiri. Saya tidak bisa khawatir tentang itu.

Bagi mereka yang tidak tahu jalannya, saya sarankan:

  • Saya menemukan bahwa setiap bahasa OO yang saya pelajari menjadikan saya pengembang OO yang lebih baik. Banyak yang bisa dibawa dari setiap bahasa ke bahasa lain, selama Anda menemukan komunitasnya.
  • Anda belajar lebih banyak dari kegagalan daripada dari kesuksesan, tetapi cobalah untuk melakukannya pada waktu Anda sendiri. Secara profesional, percaya pada mereka yang memiliki lebih banyak pengalaman, setidaknya beberapa waktu - tetapi jangan takut untuk bertanya "Mengapa?"
  • Pelajari kelima prinsip SOLID dan pahami mengapa prinsip-prinsip itu ada. Tidak satu pun dari mereka adalah peraturan, tetapi itu adalah pedoman yang baik ketika Anda tersesat.
  • Pengembangan Berbasis Tes membuat lebih banyak peningkatan pada keterampilan desain OO saya daripada apa pun yang pernah saya pelajari.
  • Anda tidak akan menjadi yang terbaik sampai Anda beralih dari underengineering ke overengineering dan kemudian menemukan keseimbangan yang tepat (lebih dekat ke yang terakhir).
  • Sebenarnya, goreskan itu, kamu tidak akan sebagus dirimu dua tahun kemudian.
  • Baca banyak buku dan blog tetapi jangan anggap sebagai Injil. Industri ini masih belum menemukan, dan mungkin tidak pernah menemukan, jalan yang sempurna.
  • Dengan segala cara, pelajari pola desain, tetapi jangan mencari tempat untuk menggunakannya, cukup gunakan sebagai fasilitator untuk komunikasi.

Semoga ada yang bisa membantu.

pdr
sumber
1
Daftar yang baik @ pdr. +1
Saeed Neamati
5
+1 "masih belum menemukan, dan mungkin tidak pernah menemukan, jalur yang sempurna."
ocodo
1
+1 "Pengembangan Berbasis Tes membuat lebih banyak peningkatan pada keterampilan desain OO saya daripada apa pun yang pernah saya pelajari."
kevin cline
1
SOLID
Mudassir
Terima kasih, saya punya pertanyaan untuk programmer
LCJ
5

Saya pikir bahwa untuk sepenuhnya menghargai model OO, Anda harus memiliki pengalaman gagal total dengan teknik pemrograman non-OO. Anda dapat memahami OO di dalam dan luar, tetapi untuk menghargai dan menghargainya, itu harus menjadi alat baru yang mengkilap yang menggantikan yang berkarat lama yang tidak cukup melakukan pekerjaan.

Saya sendiri belajar sendiri selama 7 tahun sebelum akhirnya belajar OO di tingkat perguruan tinggi Jawa. Sebelum itu, saya akan terus membangun proyek-proyek ini, dan mereka akan menjadi sangat besar sehingga saya akan lupa apa yang sedang terjadi. Mereka akan menjadi besar, tidak terorganisir, dan membutuhkan banyak perawatan untuk membuat perubahan kecil. Pada dasarnya saya terus menemukan diri saya terjebak dengan kode saya dan mulai lagi dari awal terus-menerus.

Butuh beberapa saat untuk mengeluarkan kepala dari desain linier yang saya adopsi, tetapi begitu saya sepenuhnya memahami model OO, rasanya seperti Eureka! Saya dapat membuat kode proyek yang jauh lebih kompleks saya sendiri dan produktivitas saya menembus atap setelah mempelajari konsep-konsep seperti warisan. Saya tidak membuang waktu untuk menulis ulang kode atau memulai lagi, karena secara objektif semuanya masuk akal dan itu hanya intuitif.

Ini adalah pendapat saya bahwa setiap programmer harus tahu bahasa sebanyak mungkin. Ini akan membuat mereka menjadi veteran yang lebih berpengalaman, terlepas dari apakah itu OO atau bukan. Setelah Anda mengerti OO, Anda dapat mengambil teknik-teknik itu dan menerapkannya di mana pun mereka diterapkan.

IMHO, jika Anda tidak mengerti, atau tidak memiliki keinginan untuk belajar OO, Anda tidak akan cukup diperlengkapi di medan perang kehidupan. Semakin banyak perusahaan menggunakan bahasa OO yang lebih baru. Saya tidak melihat alasan untuk tidak tahu model OO hari ini di usia.

Bergantung pada bagaimana orang itu belajar, tergantung pada bagaimana mereka ingin mempelajari model itu. Saya pribadi belajar paling baik ketika seseorang mengajar saya, dan pergi ke kelas untuk Java I dan Java II benar-benar membuat perbedaan besar bagi saya. Saya akan merekomendasikan mengambil pilihan rekayasa perangkat lunak di perguruan tinggi, atau hanya online dan mencari tutorial OO jika Anda tidak memiliki akses ke kursus perguruan tinggi atau ingin belajar di waktu luang Anda.

Ketika saya memikirkan kembali bagaimana hal itu dijelaskan kepada saya, saya katakan; Apple adalah Apple, dan Orange adalah Orange. Ya, mereka berdua jatuh dari pohon, tetapi mereka adalah dua buah yang sama sekali berbeda dan ada harmoni Anda.

Styler
sumber
1
Apakah maksud Anda gagal total dengan pemrograman fungsional, atau gagal total dengan pemrograman prosedural?
Andrew Grimm
Gagal dengan pemrograman fungsional, tetapi tidak gagal dalam penguasaan. Maksud saya gagal dalam implementasi yang sukses karena keterbatasannya.
Styler
Jadi yang Anda maksud adalah pemrograman fungsional, bukan pemrograman prosedural?
Andrew Grimm
Pemrograman non OO.
Styler
2
Saya pasti menyarankan untuk mengedit ini, karena non-OO! = Fungsional oleh imajinasi apa pun. Hal-hal bahkan bisa menjadi keduanya.
Magus
0

Selalu ada hambatan bagi mereka yang tertarik atau tidak, tetapi konteks dan tingkat keparahannya dapat bervariasi.

Anda tidak perlu belajar banyak bahasa untuk konsep OO, mulai dengan satu bahasa yang Anda sukai, selama periode waktu Anda akan mendapatkan pijakan yang kuat pada bahasa tersebut, posting ini layak untuk mengeksplorasi beberapa hal yang telah Anda lakukan sudah dan coba jalankan hal yang sama pada bahasa yang berbeda. Keahlian dalam satu bahasa membantu dalam beralih ke yang baru karena Anda akan memiliki tolok ukur untuk dinilai.

Setiap proyek adalah pengalaman belajar daripada keberhasilannya, yang penting adalah seberapa baik Anda menyesuaikan fitur untuk penggunaan terbaik Anda, kadang-kadang ada baiknya membaca kode orang lain dan mencari tahu bagaimana dan mengapa itu dilakukan. Jika Anda bisa mendapatkan mentor, itu akan luar biasa. Selalu tahu alasan Mengapa ini dipilih , Bagaimana kalau melakukannya dengan cara lain. Cobalah untuk mengerjakan logika dan desain model Anda sendiri dan melemparkannya ke senior / mentor Anda. Dengan cara ini Anda akan meningkatkan keterampilan Anda, mungkin pada awalnya mereka akan langsung pergi ke tempat sampah tetapi kemudian Anda telah mencoba dan belajar apa yang Anda lakukan salah. Iteratif Anda akan menjadi lebih baik dan lebih baik.

V4Vendetta
sumber