Open roktas opened 4 years ago
İsim uzaylarında şimdilik belirlediğim namespace'ler:
student
employee
user
unit
P.S: Namespace seçiminde başta usn
gibi kısa gidelim dedim ama anlamlı olmadı pek. Doğrudan kodlanan entiteyi seçelim. İsimlerde code
, id
, number
gibi eklerden de kaçındım.
İş kaydı
Uygulamada
Codifications
kitaplığıyla tekil kodlar üretiyoruz: öğrenci numaraları, kullanıcı adları gibi.Codifications
kitaplığı kodların tekilliğini denetlemek içinMemory
arayüzünü kullanıyor. Veritabanında bu arayüze bağlayacağımız somut ("concrete") bir yönteme veya somut bir kod havuzu tablosuna ihtiyaç var.Aklımdaki tasarım... Kod havuzunda isim uzayları olmalı. Örneğin üretilen bir öğrenci numarasının tekilliğini denetlemek için
usn
ön ekinde karar kılınmışsapool.fetch('20320042', namespace: 'usn')
gibi bir çağrı yapılabilmeli. (Benzer durum kayıt için de geçerli ör.pool.register('20320042', namespace: 'usn')
gibi; tabii buusn
değeri koda böyle gömülmemeli, bir sabit veya enum'dan çekilmeli).Burada kritik olan iki konu var:
lock
kullanılmalıNotlar:
Sözlük, pool gibi terimler kullandım ama farklı ve daha uygun isimler de olabilir.
Burada amaç uygulamada üretilen tüm tekil kodların denetimini (isim uzaylarına ayırarak) tek bir yerden yürütmek. Üretilen tekil kodun hangi entitede (örneğin bir student, employee, unit veya user) kullanıldığıyla ilgilenmiyoruz. Fakat alternatif olarak böyle müstakil bir sözlük kullanmak yerine tekil kodun uygulamada kayıtlandığı tablo da (örneğin
User
tablosu) kullanılabilirdi. Ben olayın "tekillik" tarafıyla ilgilendiğimden sürecin ayrı bir sözlükle yalıtılmasını daha uygun buldum. Alternatif görüşlere de açığım...Katkı sağlama
Kontrol listesi
Ek içerik