Kami memiliki sistem mengerikan yang ditulis dalam ASP.NET 2.0 sehingga kami perlu menambahkan beberapa fungsionalitas. Masalahnya adalah bahwa suatu produk tertentu memiliki fitur UI yang harus dinyalakan untuk bisnis yang dimulai setelah tanggal tertentu (dan yang lainnya dimatikan), sementara halaman tersebut harus tampak sama untuk bisnis yang sudah ada.
Saya mendorong untuk menulis ulang halaman untuk bisnis baru karena saya secara naluriah menemukan ide beralih JavaScript UI berbasis tanggal, dan campuran kontrol web untuk bisnis lama dan baru menjadi "tidak rapi" (karena ingin kata yang lebih baik ).
Apakah praktik memiliki UI berbasis waktu menghadirkan praktik yang diterima secara luas, dan jika tidak, risiko apa yang diketahui dari menempuh tindakan itu?
sumber
Jawaban:
Tidak ada yang salah dengan mengubah UI berdasarkan fitur mana yang diaktifkan untuk pelanggan, atau jenis penempatan yang telah mereka pilih, tetapi perubahannya harus
(Perhatikan bahwa sebaliknya - dis fitur abling setelah waktu tertentu - adalah besar tidak-tidak kecuali Anda sudah dikomunikasikan dengan jelas bahwa Anda menjual versi trial waktu yang terbatas Menciptakan tersebut. Bom waktu dalam keadaan apapun lainnya akan membuat orang membenci Anda lebih cepat dari hampir semua hal lain.)
sumber
The UI has no business knowing the business rule about what was published when
- Baiklah, tetapi bahkan Stack Exchange memiliki aturan UI seperti itu. Misalnya, tautan "hapus" tidak muncul untuk pengguna lain pada pertanyaan tertutup hingga dua hari berlalu, dan opsi Migrasi dinonaktifkan setelah 60 hari.if (showDelete) { <button>delete</button> }
atauif ((post.date - today).days > 2) { <button>delete</button> }
?Persyaratan itu sendiri tidak bermasalah, tetapi ada cara yang baik dan buruk untuk mengimplementasikannya . Jika Anda memiliki kode yang disalin dan ditempel di seluruh tempat yang terlihat seperti:
Itu akan menjadi gila sulit untuk mempertahankan, bahkan jika itu tampak lebih cepat saat ini. Misalnya, mungkin pada titik tertentu beberapa pelanggan lama akan menginginkan tampilan baru. Mungkin di beberapa titik akan ada konfigurasi ketiga dengan tanggal cutoff sendiri.
Idealnya, Anda ingin pernyataan if ini muncul tepat satu kali dalam kode Anda, terutama di sisi server. Namun, Anda juga ingin menghindari duplikasi seluruh aplikasi dan membuat perubahan. Temukan kode umum dan buat faktor itu keluar, lalu buat fungsi kecil terpisah hanya untuk bagian-bagian yang berbeda. Kemudian aktifkan atau nonaktifkan fungsi-fungsi itu dari satu tempat pusat.
sumber
Ini adalah persyaratan, dan meskipun tampaknya bau - pada dasarnya konfigurasi berdasarkan nilai datetime - tidak ada alasan waktu tidak dapat digunakan untuk mengubah UI Anda. Kasing klasik adalah layar satnav yang berubah dari warna-warna cerah di siang hari menjadi tema gelap di malam hari (dan jika Anda benar-benar berdedikasi, warna tidak aktif di antaranya).
Namun, satu hal yang dapat saya sarankan sebagai perbaikan adalah menghapus konsep tanggal yang memungkinkan kontrol, tetapi nomor versi. Versi menetapkan konfigurasi UI (yaitu Anda memiliki flag untuk mengatakan dikonfigurasi untuk NewCustomer, dan di masa depan dapat diperluas untuk memenuhi kontrol tambahan yang diinginkan NewNewCustomer, dan sebagainya). Ini jauh lebih mudah untuk ditangani dalam kode, dan baunya jauh lebih enak.
Maka Anda hanya memiliki 1 masalah yang mengatur nomor versi berdasarkan beberapa kriteria, dan ini dapat dilakukan dengan pemeriksaan tanggal hari ini, mungkin opsi konfigurasi sisi-server nanti, atau bahkan cookie yang ditetapkan oleh pengguna login beberapa saat di masa depan.
sumber
Ini terasa seperti kasus khusus dari pertanyaan yang lebih umum: apakah ini praktik yang buruk untuk menonaktifkan fitur UI untuk alasan tertentu sesuai dengan aturan yang telah ditentukan? Maka jawabannya adalah, "tentu saja tidak." Menyerahkan tanggal secara khusus bisa rumit karena tanggal dan waktu itu sulit , tetapi pada prinsipnya umum tidak ada alasan kuat untuk tidak melakukannya jika itu yang diminta oleh persyaratan bisnis Anda.
sumber
Jika perubahan harus dilakukan dengan beberapa tujuan bisnis tertentu yang peka terhadap tanggal, maka itu adalah kejahatan yang perlu.
Jika ini tentang menyebarkan revisi ke program yang akan mengubah program secara permanen, dan desain lama tidak akan pernah digunakan lagi, maka lebih baik hanya menggunakan pembaruan pada waktu yang tepat.
sumber
Kedengarannya bagus. Sangat umum untuk memiliki UI yang beradaptasi dengan pengguna yang berbeda, misalnya di sini di stackoverflow, fitur yang berbeda diaktifkan atau dinonaktifkan berdasarkan karma pengguna individu.
Alasan Anda tidak menyukainya adalah karena hal itu jelas menambah kompleksitas relatif terhadap solusi di mana semua orang melihat UI yang sama. Namun kompleksitas tampaknya merupakan kompleksitas esensial , yaitu. ini merupakan persyaratan bisnis, bukan artefak dari keputusan arsitektur yang buruk. Tentu saja akan ada biaya (yang harus Anda komunikasikan kepada bisnis), tetapi jika bisnis memutuskan itu sepadan dengan biayanya, Anda terus menerapkannya.
Risiko yang diketahui: Risiko terbesar adalah kemungkinan untuk menguji UI dalam berbagai konfigurasi. Jika Anda mulai menggunakan / mengaktifkan fitur UI untuk berbagai kelompok pengguna, Anda dapat dengan cepat mendapatkan ledakan konfigurasi yang memungkinkan.
Anda juga harus memastikan untuk menerapkan pembatasan ke dalam lapisan logika bisnis, sehingga Anda memverifikasi bahwa pelanggan tidak dapat melakukan operasi yang tidak diizinkan, bahkan jika UI tidak seharusnya memungkinkan di tempat pertama:
sumber
Apa yang Anda gambarkan adalah konsep kencan yang efektif , yang sama sekali bukan ide baru dan pada intinya sejenis masalah sementara yang Anda dapat menerapkan pola temporal .
Pada dasarnya apa yang akan Anda lakukan dalam basis data Anda adalah menerapkan tanggal efektif untuk modul formulir atau versi formulir (di sini disebut sebagai komponen), menyimpan beberapa metadata tentang komponen-komponen tersebut dan tanggal mulai / berakhirnya yang efektif. Anda tentu saja akan memerlukan beberapa data tentang pengguna Anda di aplikasi juga.
Sepertinya Anda mungkin memiliki alasan lain yang lebih menarik untuk mempertimbangkan penulisan ulang aplikasi ini. Jika masalah kencan yang efektif adalah satu-satunya masalah Anda, saya akan menyarankan bahwa mungkin menerapkan kencan yang efektif adalah pilihan yang lebih baik. Jika tidak, Anda harus mengevaluasi itu berdasarkan skenario Anda.
sumber
Ini adalah fitur beralih dengan aktivasi berdasarkan tanggal - yang sangat valid. Bayangkan jika fitur itu hanya untuk digunakan selama periode promosi, atau harus berakhir ketika peraturan pemerintah baru masuk pada tanggal tertentu.
Anda bekerja di APS.NET dan JavaScript, tetapi fungsi Java fitur-toggle frame Togglz secara khusus memiliki aturan aktivasi berdasarkan tanggal (dan waktu!) .
sumber