Solusi terkait
Oleh
chmood
Solusi terkait
Jika terlalu banyak pekerjaan telah diinvestasikan dalam sistem terganggu oleh Fungsional dekomposisi, Anda mungkin dapat menyelamatkan hal dengan mengambil pendekatan serupa dengan pendekatan alternatif dibahas dalam Blob antipattern.
Alih-alih refactoring bottom-up dari hirarki seluruh kelas, Anda mungkin dapat memperpanjang "rutin utama" kelas untuk sebuah "koordinator" kelas yang mengelola semua atau sebagian besar fungsi sistem.
Kelas fungsi kemudian dapat "dipijat" ke dalam kelas-kuasi-berorientasi objek dengan menggabungkan mereka dan beefing mereka untuk melaksanakan beberapa pengolahan sendiri di arah dimodifikasi "koordinator" kelas. Proses ini dapat mengakibatkan hirarki kelas yang lebih bisa diterapkan
Berlakunya Untuk Pandangan Dan Timbangan Lainnya
Kedua sudut pandang arsitektur dan manajerial memainkan peran kunci dalam pencegahan baik awal atau kepolisian yang sedang berlangsung terhadap Fungsional penguraian antipattern. Jika arsitektur berorientasi objek yang benar pada awalnya direncanakan dan masalah terjadi pada tahap pengembangan, maka itu adalah tantangan manajemen untuk menegakkan arsitektur awal.
Demikian juga, jika penyebabnya adalah kurangnya arsitektur yang salah pada awalnya, maka masih merupakan tantangan manajemen untuk mengenali ini, mengerem, dan mendapatkan bantuan-arsitektur cepat lebih murah.
Dalam bahasa LISP, seperti di banyak orang lain, programmer murni jahat tertentu ada yang mengambil gembira besar di memanfaatkan "efek samping" dari fungsi bahasa tertentu untuk melakukan fungsi misterius kunci dalam sistem mereka. Analisis dan pemahaman sistem tersebut hampir tidak mungkin, dan setiap upaya reuse dianggap gila.
Seperti Poltergeist "controller" kelas, penggunaan "efek samping" untuk menyelesaikan setiap tugas prinsip dalam implementasi adalah pemanfaatan salah satu alat bahasa atau arsitektur, dan harus dihindari.
Bentuk umum
Roh jahat yang kelas dengan tanggung jawab dan peran untuk bermain dalam sistem yang terbatas; Oleh karena itu, siklus hidup yang efektif mereka cukup singkat. Poltergeists desain software kekacauan, menciptakan abstraksi yang tidak perlu; mereka terlalu kompleks, sulit untuk memahami, dan sulit untuk mempertahankan.
Antipattern ini khas dalam kasus di mana desainer akrab dengan pemodelan proses tapi baru untuk object-oriented design mendefinisikan arsitektur. Dalam antipattern ini, adalah mungkin untuk mengidentifikasi satu atau lebih angker kelas penampakan yang muncul hanya sebentar untuk memulai beberapa tindakan di kelas lain yang lebih permanen. Akroyd menyebut kelas ini "Gypsy Wagon" Biasanya, Gypsy Wagons yang diciptakan sebagai kelas kontrol yang hanya ada untuk memanggil metode dari kelas-kelas lain, biasanya dalam urutan yang telah ditentukan. Mereka biasanya jelas karena nama mereka sering bersufiks oleh _manager atau _controller.
The Poltergeist antipattern biasanya disengaja pada bagian dari beberapa arsitek bawang yang tidak benar-benar memahami konsep berorientasi objek. Kelas poltergeist merupakan artefak desain yang buruk karena tiga alasan utama:
Mereka tidak perlu, sehingga mereka membuang sumber daya setiap kali mereka "muncul."
Mereka tidak efisien karena mereka menggunakan beberapa jalur navigasi berlebihan.
Mereka mendapatkan di jalan desain berorientasi objek yang tepat dengan sia-sia mengacaukan model objek.
Gejala Dan Konsekuensi jalur navigasi Redundant. Asosiasi sementara. Kelas Stateless. Sementara, benda durasi pendek dan kelas. Kelas satu operasi yang ada hanya untuk "benih" atau "memanggil" kelas-kelas lain melalui asosiasi sementara. Kelas dengan nama operasi "kontrol seperti" seperti start_process alpha.
Penyebab khas Kurangnya arsitektur berorientasi objek. "Para desainer tidak tahu orientasi objek." Alat yang salah untuk pekerjaan itu. Bertentangan dengan pendapat umum, pendekatan berorientasi objek tidak selalu solusi yang tepat untuk setiap pekerjaan. Sebagai poster pernah membaca, "Tidak ada cara yang tepat untuk melakukan hal yang salah." Artinya, jika orientasi objek bukanlah alat yang tepat, tidak ada cara yang tepat untuk menerapkannya. Ditentukan bencana. Seperti dalam Blob, manajemen kadang-kadang membuat komitmen arsitektur selama analisis persyaratan. Ini adalah tidak pantas, dan sering menyebabkan masalah seperti antipattern ini.
Dikenal Pengecualian
Tidak ada pengecualian untuk Poltergeists antipattern.
Solusirefactored
Ghostbusters memecahkan Poltergeists dengan menghapus mereka dari hirarki kelas sama sekali. Setelah pemindahan mereka, bagaimanapun, fungsi yang "diberikan" oleh poltergeist harus diganti. Hal ini mudah dengan penyesuaian sederhana untuk memperbaiki arsitektur.
Kuncinya adalah untuk memindahkan tindakan pengendalian awalnya dirumuskan dalam Poltergeist ke dalam kelas terkait bahwa mereka dipanggil. Hal ini dijelaskan secara rinci pada bagian berikutnya.
Contoh
Agar lebih jelas menjelaskan Poltergeist, pertimbangkan contoh peach-pengalengan di gambar di bawah ini. Kita melihat bahwa PEACH_CANNER_CONTROLLER kelas adalah Poltergeist karena:
Ini memiliki jalur navigasi berlebihan untuk semua kelas-kelas lain dalam sistem.
Semua asosiasi yang bersifat sementara.
Tidak memiliki negara.
Ini adalah sementara, kelas durasi pendek yang muncul menjadi ada hanya untuk memohon kelas-kelas lain melalui asosiasi sementara.
Dalam contoh ini, jika kita menghapus kelas Poltergeist, kelas yang tersisa kehilangan kemampuan untuk berinteraksi. Tidak ada lagi memesan proses. Dengan demikian, kita perlu menempatkan kemampuan interaksi tersebut ke dalam hirarki yang tersisa. Perhatikan bahwa operasi tertentu yang ditambahkan ke setiap proses sehingga kelas individu berinteraksi dan hasil proses.
Solusi terkait
80% solusi" yang dibahas dalam Blob Anti Pola menghasilkan sesuatu yang terlihat sangat mirip dengan Poltergeist a. The "koordinator" kelas disajikan masih mengelola semua atau sebagian besar fungsi sistem dan biasanya menunjukkan banyak fitur dari Poltergeist.
Berlakunya Untuk Pandangan Dan Timbangan Lainnya
Terjadi ketika pengembang sedang merancang sebuah sistem karena mereka menerapkannya (biasanya dengan kursi celana mereka!) Meskipun tentu mungkin datang sebagai akibat dari kegagalan untuk benar arsitek sistem. Apakah ini menyajikan bukti bahwa Poltergeists benar-benar kasus manajemen gagal diserahkan kepada pembaca.
Seperti kebanyakan antipatterns pembangunan, baik sudut pandang arsitektur dan manajerial memainkan peran kunci dalam pencegahan awal dan kepolisian yang sedang berlangsung terhadap mereka. Ini melalui sudut pandang arsitektur bahwa Pola Anti muncul sering diakui, dan melalui manajemen yang efektif bahwa itu benar-benar diperhatikan bila tidak dicegah langsung.
Manajer harus berhati-hati untuk memastikan bahwa arsitektur berorientasi objek dievaluasi oleh arsitek berorientasi berkualitas sedini mungkin dan kemudian secara berkelanjutan untuk mencegah kesalahan pemula yang diinduksi seperti antipattern ini. Membayar harga untuk arsitektur yang baik di depan!
Jika terlalu banyak pekerjaan telah diinvestasikan dalam sistem terganggu oleh Fungsional dekomposisi, Anda mungkin dapat menyelamatkan hal dengan mengambil pendekatan serupa dengan pendekatan alternatif dibahas dalam Blob antipattern.
Alih-alih refactoring bottom-up dari hirarki seluruh kelas, Anda mungkin dapat memperpanjang "rutin utama" kelas untuk sebuah "koordinator" kelas yang mengelola semua atau sebagian besar fungsi sistem.
Kelas fungsi kemudian dapat "dipijat" ke dalam kelas-kuasi-berorientasi objek dengan menggabungkan mereka dan beefing mereka untuk melaksanakan beberapa pengolahan sendiri di arah dimodifikasi "koordinator" kelas. Proses ini dapat mengakibatkan hirarki kelas yang lebih bisa diterapkan
Berlakunya Untuk Pandangan Dan Timbangan Lainnya
Kedua sudut pandang arsitektur dan manajerial memainkan peran kunci dalam pencegahan baik awal atau kepolisian yang sedang berlangsung terhadap Fungsional penguraian antipattern. Jika arsitektur berorientasi objek yang benar pada awalnya direncanakan dan masalah terjadi pada tahap pengembangan, maka itu adalah tantangan manajemen untuk menegakkan arsitektur awal.
Demikian juga, jika penyebabnya adalah kurangnya arsitektur yang salah pada awalnya, maka masih merupakan tantangan manajemen untuk mengenali ini, mengerem, dan mendapatkan bantuan-arsitektur cepat lebih murah.
Dalam bahasa LISP, seperti di banyak orang lain, programmer murni jahat tertentu ada yang mengambil gembira besar di memanfaatkan "efek samping" dari fungsi bahasa tertentu untuk melakukan fungsi misterius kunci dalam sistem mereka. Analisis dan pemahaman sistem tersebut hampir tidak mungkin, dan setiap upaya reuse dianggap gila.
Seperti Poltergeist "controller" kelas, penggunaan "efek samping" untuk menyelesaikan setiap tugas prinsip dalam implementasi adalah pemanfaatan salah satu alat bahasa atau arsitektur, dan harus dihindari.
Bentuk umum
Roh jahat yang kelas dengan tanggung jawab dan peran untuk bermain dalam sistem yang terbatas; Oleh karena itu, siklus hidup yang efektif mereka cukup singkat. Poltergeists desain software kekacauan, menciptakan abstraksi yang tidak perlu; mereka terlalu kompleks, sulit untuk memahami, dan sulit untuk mempertahankan.
Antipattern ini khas dalam kasus di mana desainer akrab dengan pemodelan proses tapi baru untuk object-oriented design mendefinisikan arsitektur. Dalam antipattern ini, adalah mungkin untuk mengidentifikasi satu atau lebih angker kelas penampakan yang muncul hanya sebentar untuk memulai beberapa tindakan di kelas lain yang lebih permanen. Akroyd menyebut kelas ini "Gypsy Wagon" Biasanya, Gypsy Wagons yang diciptakan sebagai kelas kontrol yang hanya ada untuk memanggil metode dari kelas-kelas lain, biasanya dalam urutan yang telah ditentukan. Mereka biasanya jelas karena nama mereka sering bersufiks oleh _manager atau _controller.
The Poltergeist antipattern biasanya disengaja pada bagian dari beberapa arsitek bawang yang tidak benar-benar memahami konsep berorientasi objek. Kelas poltergeist merupakan artefak desain yang buruk karena tiga alasan utama:
Mereka tidak perlu, sehingga mereka membuang sumber daya setiap kali mereka "muncul."
Mereka tidak efisien karena mereka menggunakan beberapa jalur navigasi berlebihan.
Mereka mendapatkan di jalan desain berorientasi objek yang tepat dengan sia-sia mengacaukan model objek.
Gejala Dan Konsekuensi jalur navigasi Redundant. Asosiasi sementara. Kelas Stateless. Sementara, benda durasi pendek dan kelas. Kelas satu operasi yang ada hanya untuk "benih" atau "memanggil" kelas-kelas lain melalui asosiasi sementara. Kelas dengan nama operasi "kontrol seperti" seperti start_process alpha.
Penyebab khas Kurangnya arsitektur berorientasi objek. "Para desainer tidak tahu orientasi objek." Alat yang salah untuk pekerjaan itu. Bertentangan dengan pendapat umum, pendekatan berorientasi objek tidak selalu solusi yang tepat untuk setiap pekerjaan. Sebagai poster pernah membaca, "Tidak ada cara yang tepat untuk melakukan hal yang salah." Artinya, jika orientasi objek bukanlah alat yang tepat, tidak ada cara yang tepat untuk menerapkannya. Ditentukan bencana. Seperti dalam Blob, manajemen kadang-kadang membuat komitmen arsitektur selama analisis persyaratan. Ini adalah tidak pantas, dan sering menyebabkan masalah seperti antipattern ini.
Dikenal Pengecualian
Tidak ada pengecualian untuk Poltergeists antipattern.
Solusirefactored
Ghostbusters memecahkan Poltergeists dengan menghapus mereka dari hirarki kelas sama sekali. Setelah pemindahan mereka, bagaimanapun, fungsi yang "diberikan" oleh poltergeist harus diganti. Hal ini mudah dengan penyesuaian sederhana untuk memperbaiki arsitektur.
Kuncinya adalah untuk memindahkan tindakan pengendalian awalnya dirumuskan dalam Poltergeist ke dalam kelas terkait bahwa mereka dipanggil. Hal ini dijelaskan secara rinci pada bagian berikutnya.
Contoh
Agar lebih jelas menjelaskan Poltergeist, pertimbangkan contoh peach-pengalengan di gambar di bawah ini. Kita melihat bahwa PEACH_CANNER_CONTROLLER kelas adalah Poltergeist karena:
Ini memiliki jalur navigasi berlebihan untuk semua kelas-kelas lain dalam sistem.
Semua asosiasi yang bersifat sementara.
Tidak memiliki negara.
Ini adalah sementara, kelas durasi pendek yang muncul menjadi ada hanya untuk memohon kelas-kelas lain melalui asosiasi sementara.
Dalam contoh ini, jika kita menghapus kelas Poltergeist, kelas yang tersisa kehilangan kemampuan untuk berinteraksi. Tidak ada lagi memesan proses. Dengan demikian, kita perlu menempatkan kemampuan interaksi tersebut ke dalam hirarki yang tersisa. Perhatikan bahwa operasi tertentu yang ditambahkan ke setiap proses sehingga kelas individu berinteraksi dan hasil proses.
Solusi terkait
80% solusi" yang dibahas dalam Blob Anti Pola menghasilkan sesuatu yang terlihat sangat mirip dengan Poltergeist a. The "koordinator" kelas disajikan masih mengelola semua atau sebagian besar fungsi sistem dan biasanya menunjukkan banyak fitur dari Poltergeist.
Berlakunya Untuk Pandangan Dan Timbangan Lainnya
Terjadi ketika pengembang sedang merancang sebuah sistem karena mereka menerapkannya (biasanya dengan kursi celana mereka!) Meskipun tentu mungkin datang sebagai akibat dari kegagalan untuk benar arsitek sistem. Apakah ini menyajikan bukti bahwa Poltergeists benar-benar kasus manajemen gagal diserahkan kepada pembaca.
Seperti kebanyakan antipatterns pembangunan, baik sudut pandang arsitektur dan manajerial memainkan peran kunci dalam pencegahan awal dan kepolisian yang sedang berlangsung terhadap mereka. Ini melalui sudut pandang arsitektur bahwa Pola Anti muncul sering diakui, dan melalui manajemen yang efektif bahwa itu benar-benar diperhatikan bila tidak dicegah langsung.
Manajer harus berhati-hati untuk memastikan bahwa arsitektur berorientasi objek dievaluasi oleh arsitek berorientasi berkualitas sedini mungkin dan kemudian secara berkelanjutan untuk mencegah kesalahan pemula yang diinduksi seperti antipattern ini. Membayar harga untuk arsitektur yang baik di depan!
Category
Komentar