Field — ma’lumot tuzilmasi, obyekt, yozuv yoki protokol xabarida nom yoki pozitsiya bilan aniqlanadigan alohida qiymat joyi. Masalan, foydalanuvchi yozuvidagi email, class ichidagi createdAt va paket headeridagi uzunlik qiymati field hisoblanadi. Field type, o‘lcham, nullability, visibility va boshqa constraintlarga ega bo‘lishi mumkin.
Obyekt modelida
Class field obyekt holatini saqlaydi. Instance field har obyekt uchun alohida, static field esa class bo‘yicha umumiy bo‘ladi. Private field ichki invariantni himoya qiladi; tashqi kod unga method yoki property orqali murojaat qiladi. Public mutable field obyektni nazoratsiz holatga keltirishi mumkin.
Property field bilan bir xil ko‘rinishi mumkin, lekin getter, setter, validation yoki hisoblashni bajaradi. Derived qiymatni alohida fieldda saqlash ikki manbaning mos kelmay qolishiga olib keladi. Masalan, full_name doim first_name va last_namedan hisoblanishi mumkin. Performance uchun cache qilinsa invalidation qoidasi zarur.
Yozuv va database’da
Record fieldlari schema bilan belgilanadi. Relational jadvalda field ko‘pincha column atamasi bilan almashtirib ishlatiladi, ammo database nazariyasida qiymat row va column kesishmasida turadi. Type, NOT NULL, default, CHECK va foreign key ma’lumot sifatini himoya qiladi. Faqat ilova validatsiyasiga tayanish boshqa import yoki servis orqali noto‘g‘ri qiymat kirishiga yo‘l ochadi.
Null, empty string va default qiymat bir xil emas. Field yo‘qligi “berilmagan”, null “ma’lum emas” yoki “qo‘llanmaydi” ma’nolarini anglatishi mumkin. API va database mapping bu farqni saqlashi kerak. Har fieldga default 0 berish real qiymat bilan yetishmayotgan ma’lumotni aralashtiradi.
Binary va protokol fieldlari
Network header fieldlari bit yoki bayt offset bilan aniqlanadi. Endianness, alignment va bit width noto‘g‘ri talqin qilinsa barcha keyingi qiymatlar buziladi. Length field real payloaddan katta ko‘rsatilsa buffer over-read, kichik bo‘lsa parser desynchronization yuz berishi mumkin. Parser arifmetik overflow va umumiy paket chegarasini tekshiradi.
Tagged serialization’da field nomi o‘rniga raqam ishlatilishi mumkin. Protocol Buffers’dagi field number contractning bir qismidir; olib tashlangan raqam boshqa ma’no uchun qayta ishlatilmaydi. Unknown fieldni saqlash yoki tashlash forward compatibilityga ta’sir qiladi. Required field qo‘shish eski producer bilan moslikni buzadi.
Form field
Veb formada field label, input, help text va xato xabaridan iborat foydalanuvchi tushunchasidir. name serverga yuboriladigan kalitni belgilaydi. Bir xil name checkbox guruhida bir nechta qiymat berishi mumkin. Disabled control odatda yuborilmaydi, readonly esa yuborilishi mumkin; server ikkalasini ham authorization sifatida qabul qilmaydi.
Label input bilan programmatik bog‘lanadi, required va error holati screen readerga yetkaziladi. Client validation qulaylik beradi, server esa barcha fieldni qayta tekshiradi. Password, token va fayl kabi maxfiy field analytics yoki xato logiga tushmasligi kerak.
Evolyutsiya va maxfiylik
Public schemadagi fieldni rename qilish breaking change bo‘lishi mumkin. Migration davrida server eski nomni qabul qilib, yangi nomni qaytarishi yoki versionlangan schema ishlatishi mumkin. PII fieldlar tasniflanib, encryption, maskalash, retention va export qoidasi bilan bog‘lanadi. “Faqat bitta field” ham boshqa qiymatlar bilan birga shaxsni aniqlashi mumkin.
Reflection va serialization
Reflection runtime’da field nomi va type’ini ko‘rishi mumkin, ammo private fieldni avtomatik export qilish encapsulation hamda maxfiylikni buzadi. Serializer explicit allowlist yoki public DTO’dan foydalanadi. Field tartibiga tayanadigan binary formatda compiler layout o‘zgarishi moslikni buzishi mumkin.
Bog‘liq tushunchalar
Attribute, Property, Column, Record, Schema, Data type, Encapsulation