අවසන් සතියේ Dev.to වෙබ් අඩවියේ ලිපියක, Express භාවිතා කරමින් ලියාපදිංචි (register) API එකක් පිරිසිදු කර තිබුණා. ඒකේ ව්යාපාරික ලොජික් එක handler එකෙන් වෙන් කර, registerUser නමින් ස්වතන්ත්ර ක්රියාමාර්ගයක් ලෙස හදලා, ඒක HTTP handler එකකින් පමණක් පරිවර්තනය කරන පරිදි සැකසුම් කරලා. අද අපි ඒම ලොජික් එක Go භාෂාවෙන් ලියලා, Node.js සමඟ පේළියෙන් පේළි වඩාත් සමානව බලමු.
Node.js පැකේජයේ bcrypt සහ Prisma ORM භාවිතා කරලා, ඊමේල්, මුරපදය, දත්ත සංග්රහය, සාදාරණ ඊමේල් යැවීම වගේ සියලු පියවරයන් එකම registerUser ක්රමයට ඇතුළත් කරලා. ඒකේ වැරදි වර්ග (ValidationError, ConflictError) HTTP status codes සමඟ සම්බන්ධ කරලා, handler එකේ try‑catch ව්යාපාරික ලොජික් එකෙන් වෙන් කරලා.
Go සංස්කරණයේ, එම ලොජික් එක RegisterUser නමින්, database/sql මොඩියුලය භාවිතා කරමින් සෘජු SQL විධාන මගින් දත්ත ගබඩා කරයි. Node.js හි Prisma ORM වෙනුවට, Go හි සාමාන්ය SQL ක්රියාකාරකම් භාවිතා කිරීම භාෂා අනුව සම්මත පද්ධතියක් බවත්, ඒකේ ව්යාපාරික ලොජික් HTTP පැකේජයන් (net/http) වලින් තවත් වෙන් කරලා, ඒකේ unit test ලියන්න පහසු බවත් පෙන්වයි.
මෙම උදාහරණය පෙන්වන ප්රධාන කරුණු දෙකක්: එකම ව්යාපාරික ලොජික් කේතයක්, භාෂා දෙකෙහිම එකම ආකාරයෙන් වෙන් කරලා, API handler එකෙන් වෙන් කිරීම; සහ ORM භාවිතා කිරීම හෝ සෘජු SQL භාවිතා කිරීම අතර තේරීම්, කේතයේ පිරිසිදුභාවය හා පරිපාලන හැකියාව කෙරෙහි බලපායි. ඒ නිසා, ඔබේ පද්ධතියේ scalability, maintainability, testability වඩාත් උසස් කරගත හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණික ශිෂ්යයන්ට, මෙම සංකල්පය භාෂා-අධාරිත නොවන clean architecture එකක් ලෙස ඉගෙන ගැනීමට හොඳ අවස්ථාවක්. Node.js, Go දෙකේම එකම ලොජික් එකක් ලියලා, ඒකේ unit test ලියන්න පුළුවන්, ඒකෙන් කේතයේ ගුණාත්මකභාවය වැඩි වේ.
- විකාශකයින් – බහුභාෂා පරිසරයන්හි කේතය හුවමාරු කරගැනීමේ හැකියාව, API එකේ වෙනස්කම් අඩු කරයි.
- ව්යාපාර – තාක්ෂණික ධාරිතාවය වැඩි කරමින්, එකම ලොජික් එක භාවිතා කරලා, පද්ධතියේ අඩුපාඩු හඳුනා ගැනීම සහ නවීකරණය පහසු වේ.
- අධ්යාපනය – සිසුන්ට ORM vs raw SQL, error handling, dependency separation වැනි සංකල්ප තේරුම් ගැනීමට ප්රායෝගික උදාහරණයක්.
සාරාංශය ලෙස, භාෂා වෙනස් කරන අතරතුරත්, ව්යාපාරික ලොජික් එක වෙන් කිරීමේ සංකල්පය අමතක නොකරන්න. එය ඔබේ පද්ධතියේ පිරිසිදුභාවය, පරීක්ෂණ හැකියාව, සහ නවීකරණය පහසු කරයි.
ඔබේ ඊළඟ API ව්යාපෘතියේදී, මෙම පදනම අනුගමනය කරලා, තාක්ෂණික ගුණාත්මකභාවය ඉහළ දියත් කරගන්න.