1. துறைசார்ந்த மொழியைப் பேசவேண்டும்.
ஒவ்வொரு மென்பொருளும் ஏதோவொரு துறையின் தேவைக்காகவே உருவாக்கப்படுகிறது. எந்தத் துறையின் பிரச்சனைகளுக்குத் தீர்வாக மென்பொருளை உருவாக்குகிறோமோ, அதற்கான நிரலில், அந்தத் துறை சார்ந்த கலைச்சொற்கள் நிறைந்திருக்கவேண்டும். அப்போதுதான், துறைசார் வல்லுநர்களும் (SME), நிரலர்களும் மென்பொருள் குறித்த விவாதங்களில் சிரமமின்றி பேசிக்கொள்ளமுடியும். அதேபோல, நிரலின் கூறுகள் (module), இனக்குழுக்கள் (class), மாறிகள் (variables) ஆகியவற்றுக்கு பெயரிடும்போதும், துறைசார்ந்த பெயர்களையே வைப்பது நல்லது.
Image by OpenClipart-Vectors on Pixabay
முன்னாள் ஜெர்மன் அதிபர் வில்லி பிராண்ட் அவர்களின் புகழ்பெற்ற கூற்று ஒன்றுள்ளது.
If I’m selling to you, I speak your language. If I’m buying, then you need to speak my language!
உங்களிடம் நான் ஒருபொருளை விற்கவரும்போது உங்கள் மொழியில் பேசுகிறேன். ஆனால், உங்களிடம் நான் பொருள் வாங்கவேண்டுமென்றால், நீங்கள் என்மொழியில் பேசியாகவேண்டும்.
நிரலாக்கத்துறைக்கும் இது மிகப்பொருத்தமானதாகும்.
2. செய்கிற வேலைக்குப் பொருத்தமான கருவியைத் தேர்ந்தெடுக்கவேண்டும்.
எந்தவொரு வேலையையும் செவ்வையாகச் செய்வதற்கு, நமக்குப் பல கருவிகள் தேவைப்படுகின்றன. நாம் தேர்ந்தெடுக்கிற கருவிகளைப் பொருத்தே, வேலையின் நேரமும், அதற்கான செலவும் அமைகின்றன. நேர்த்தியான கருவிகளைப் பயன்படுத்துவதன் மூலம், ஒரு வேலையை குறைந்த நேரத்தில் செம்மையாகச் செய்துமுடிக்க முடியும்.
Image by stevepb on Pixabay
பெரும்பாலான நிரலாக்க மொழிகளில் பொதுவானவேலைகளைச் செய்வதற்கு திரட்டுகளும் கருவிகளும் உள்ளன. இவற்றில் எதைத் தேர்ந்தெடுப்பது என்பதில் கவனமாக இருக்கவேண்டும். நிரலாக்க உலகில் ஒவ்வொரு நாளும் புதுப்புது கருவிகள் தோன்றுகின்றன.
நமது வேலையைச் செய்வதற்கு சரியான கருவியைத் தேர்ந்தெடுக்க வேண்டும். பிறரால் பிரபலமாக பயன்படுத்தப்படுகிறது என்ற காரணத்திற்காக, நமக்குத் தேவையில்லாத, நம்வேலைக்குப் பொருந்தாத ஒரு கருவியை நாம் பயன்படுத்தக்கூடாது.
3. ஒரே வேலையை மீண்டும் மீண்டும் செய்யக்கூடாது
ஒரு குறிப்பிட்ட வேலையைச் செய்கிற நிரலை ஒரு முறைக்கு மேல் எழுதக்கூடாது. ஒருவேளை, ஒரே மாதிரியான நிரலை எழுதவேண்டியிருந்தால், கருப்பொருளாக்கத்தைக் (abstraction) கையாளலாம். பெரும்பாலான சமயங்களில், வேறொரு வலைத்தளத்திலிருந்து நிரலைப் படியெடுத்து பயன்படுத்தும் போது, ஒரே வேலையைச் செய்ய வெவ்வேறு வகை நிரல்கள் இருப்பதைக் கண்டறிய முடியாமல் போகலாம். தெளிவான வடிவமைப்பைப் (design) பின்பற்றுவதன் மூலம், இதனைத் தவிர்க்கமுடியும். தெளிவான வடிவமைப்பு இருந்தபோதிலும், நிரலாக்கத்தில் பிழை ஏற்பட்டு ஒரே தர்க்கவிதிக்கு ஒன்றுக்கு மேற்பட்ட நிரல்கள் எழுதப்பட்டால், அதனை இயல்நிலை நிரல் பகுப்பாய்வுக் (static code analysis) கருவிகள் கொண்டு கண்டறியலாம்.
4. நிரல் எழுதும் நிரலை எழுதவேண்டும்
ஒரே வேலையைச் செய்வதற்கு இருவேரு நிரல்களை எழுதுவதை எப்படி தவிர்க்கிறோமோ, அதேபோல, ஒரே மாதிரியான வேலையைச் செய்வதற்கும் இருவேரு நிரல்களை நாமே எழுதுவதை தவிர்க்கலாம். மேலும், பைதான், ரூபி போன்ற மொழிகளில் metaprogramming என்றொரு கோட்பாடு உள்ளது. ஒரு எடுத்துக்காட்டுடன் இதை மிக எளிதாகப் புரிந்துகொள்ளலாம். ஒரு முகவரியை பிரதிபலிக்கும் ரூபி இனக்குழுவை பின்வருமாறு எழுதலாம்.
class Address def address_line1= do |value| @address_line1 = value end def address_line1 do @address_line1 end def address_line2= do |value| @address_line2 = value end def address_line2 do @address_line2 end def city= do |value| @city = value end def city do @city end def state_province= do |value| @state_province = value end def state_province do @state_province end def post_code= do |value| @post_code = value end def post_code do @post_code end def country= do |value| @country = value end def country do @country end end
ஒரு இனக்குழுவிலுள்ள ஆறு மாறிகளுக்கு மதிப்பளிக்கவும், அவற்றின் மதிப்பைப் பெறவும், தேவையான நிரலை மேலே எழுதியிருக்கிறோம். இதனை இவ்வளவு தூரம் நீட்டாமல், சுருக்கமாக ரூபியில் எழுதமுடியும்.
class Address ADDRESS_FIELDS = ["address_line1", "address_line2", "city", "state_province", "post_code", "country"] ADDRESS_FIELDS.each do |field| define_method("#{field}=") do |info| instance_variable_set("@#{field}", info) end define_method("#{field}") do instance_variable_get("@#{field}") end end end
5. படைப்பதும் அவசியம் பராமரிப்பதும் முக்கியம்
முதல் கோணல் முற்றும் கோணல் என்ற பழமொழி நாம் அறிந்ததே. ஆனால், முதல் கோணல் மட்டுமல்ல, இடையில் கோணல் ஆனாலும் கூட முற்றும் கோணலே. Broken Window Theory என்றொரு கோட்பாடு உள்ளது.
Consider a building with a few broken windows. If the windows are not repaired, the tendency is for vandals to break a few more windows. Eventually, they may even break into the building, and if it’s unoccupied, perhaps become squatters or light fires inside.
ஒரு கட்டிடத்தின் சில சன்னல்களின் கண்ணாடிகள் உடைந்திருப்பதாக வைத்துக்கொள்வோம். ஒருவேளை அவற்றை எவரும் சரிசெய்யாவிட்டால், ஒருசில விஷமிகள், மேலும் பல சன்னல் கண்ணாடிகளை உடைக்கத்துணியலாம். ஒருகட்டத்திற்குப் பிறகு, அந்த இடமே, புறம்போக்குகளால் ஆக்கிரமிக்கப்பட்டு, சமூகவிரோதச் செயல்களுக்குப் பயன்படுத்தப்படலாம்.
இந்தக் கோட்பாட்டின் வரையறை சற்றே மிகைப்படுத்தப்பட்டதாகத் தோன்றினாலும், அதன் சாராம்சம் மிகமுக்கியமானது. பராமரிப்பின் முக்கியத்துவத்தை எடுத்துக்கூறுகிறது. ஒரு படைப்பை உருவாக்குவதற்கு நாம் எந்தளவு சிரத்தை எடுத்துக்கொள்கிறோமோ, அதேபோல, அதைப் பராமரிப்பதற்கும் சிரத்தை எடுத்துக்கொள்ளவேண்டும்.
Image by GregReese on Pixabay
இந்த கோட்பாடு மென்பொருளாக்கத்திற்கும் பொருந்தும். உங்கள் மென்பொருளை தெளிவாக வடிவமைத்து, சிறப்பாக எழுதியபின், அதில் ஏற்படும் சிறு மாற்றங்களையும் நாம் தொடர்ந்து கண்காணிக்கவேண்டும். அதன் வடிவமைப்பிலும், நிரலாக்கக் கோட்பாடுகளிலும், சிறிது பிசகு ஏற்பட்டாலும், அதை உடனடியாக சரிசெய்யவேண்டும். இல்லாவிடில், அதைத்தொடர்ந்து மேலும் பல இடங்களில் பிசகி, அதிக வழுக்களுக்கு வழிவகுத்துவிடும். எனவே, உடைந்த கண்ணாடிகளை உடனுக்குடன் சரிசெய்வோம்.
6. சோதனை மேல் சோதனை செய்வோம்
சோதனைகளின் முக்கியத்துவத்தை நாம் எந்தளவு புரிந்து வைத்திருக்கிறோம் என்பதை இந்த பண்பு சுட்டிக்காட்டுகிறது. மென்பொருளை உருவாக்கி முடித்தபின் சோதிக்காமல், உருவாக்கத்தின் முக்கியமான ஒரு பகுதியாக சோதித்தல் இருக்கவேண்டும்.
சோதனை வழி நிரலாக்கம் என்பது நிரலாக்க முறைகளில் பிரபலமான ஒன்று. சுருக்கமாகச் சொல்லவேண்டுமென்றால், நாம் தீர்க்க விரும்புகிற பிரச்சனையை, முதலில் ஒரு நிரலாக்கச் சோதனையாக எழுதி, அதன் பின்னர், அதைத் தீர்க்கிற நிரலை எழுதவேண்டும்.
சரி. சோதனையை முதலில் எழுதியாயிற்று. நிரலும் எழுதியாயிற்று. இனிமேல் அந்த சோதனை தேவையில்லை என தூக்கி எறிந்துவிடலாமா? அறவே கூடாது. நிரலில் செய்யப்படுகிற எல்லா மாற்றங்களும் சோதனைக்குள்ளாக வேண்டும். ஒவ்வொரு நிரலரும் தங்களது மாற்றங்களை களஞ்சியத்திற்கு அனுப்பியதும், இந்த சோதனைகள் இயக்கப்பட்டு, நிரலின் தரத்தை எடுத்துரைக்கவேண்டும். இதற்கு இடையறாத ஒருங்கிணைப்பு என்றுபெயர்.
மேலும், சோதனைகளில் பலவகைகள் உண்டு. ஓரலகு சோதனைகள், ஒருங்கிணைப்புச் சோதனைகள், செயற்கூறிய சோதனைகள் முதலியன இவற்றுள் சில. இவற்றுள் எந்தெந்த சோதனைகள் எந்தளவு இருக்கவேண்டும் என்பதை சோதனை பிரமிடு கொண்டு அறியலாம். மேலும், எல்லா சோதனைகளையும் முடிந்த அளவு தானியங்கி சோதனைகளாக மாற்றுவது நல்லது. குறைந்த நேரத்தில், அதிக மனித தலையீடின்றி, சோதனைகளை இயக்குவதற்கு இது உதவுகிறது.
எனவே, நிரல் எழுதுவதற்கு முன்னரே சோதிக்கவேண்டும். இடையறாது சோதிக்கவேண்டும். தானியங்கி முறையில் சோதிக்கவேண்டும்.
7. நாளைய தேவைகளை நாளை கவனிப்போம்
இன்றைய தேவைகளுக்கு மட்டுமே நிரலெழுதவேண்டும். ஒருவேளை பிற்காலத்தில் தேவைப்படலாம் என்ற எண்ணத்தில் இன்றைக்கான நிரலை எழுதக்கூடாது. ஒருவேளை, பிற்காலத்தில் அந்த தேவை ஏற்பட்டாலும் கூட, நாம் இன்றைக்கு எழுதிய தீர்வு, அன்றைக்கும் பொருந்தும் என்று நாம் உறுதிகூற இயலாது. பிற்காலத் தேவைகளைக் கருத்தில்கொண்டு எழுதப்படுகிற நிரல், பெரும்பாலும் பயனற்றுப் போவதையே காண்கிறோம்.
8. கற்றது கையளவு கல்லாதது உலகளவு
கற்றல் என்பது பயணத்தின் இலக்காக அல்ல, பயணமாகவே இருக்கிறது. பள்ளியில், கல்லூரியில் கற்றதோடு நாம் எவரும் நிறுத்திவிடுவதில்லை. ஒவ்வொரு நாளும், ஏதோவொன்றைப் புதிதாக கற்றுக்கொள்வதில் எல்லோருக்கும் ஆர்வமிருக்கிறது. அதற்கான நேரத்தையும் உழைப்பையும் செலவழிக்க வேண்டும். உங்கள் ஆயுதங்களை பட்டை தீட்டிக்கொள்வதற்கு சரியான நேரத்தை செலவழிக்காவிட்டால், உங்களால் திறம்பட காரியங்களை முடிக்கமுடியாது. எனவே, உங்கள் அறிவை வளர்ப்பதில் கவனம் செலுத்துங்கள்.
9. பன்மொழிப் புலமை பழகிடல் வேண்டும் (யாமறிந்த மொழிகளிலே)
ஒன்றுக்கு மேற்பட்ட மொழிகளை அறிந்தவர்களுக்கு பன்மொழியாளர்கள் என்று பெயர். இவை நாம் பேசுகிற, எழுதுகிற இயல்மொழிகளுக்கு மட்டுமல்லாமல், நிரலாக்க மொழிகளுக்கும் பொருந்தும். நாம் கற்றுக்கொண்ட முதல் நிரலாக்கமொழியோடு நின்றுவிடாமல், பல்வேறு மொழிகளில் பரிச்சயப்படுத்திக்கொண்டு, பல்வேறு கட்டமைப்புகளை பயன்படுத்திப் பார்க்க வேண்டும். அப்போது தான் நாம் முன்னரே கண்டதுபோல, கையிலுள்ள பிரச்சனையை தீர்ப்பதற்குச் சரியான மொழியை, கட்டமைப்பை நாம் தேர்ந்தெடுக்கமுடியும்.
10. சட்டியில் இருந்தால் தான் அகப்பையில் வரும்
ஒரு நல்ல எழுத்தாளர் நான்கு பக்கங்கள் எழுதுவதற்கு 400 பக்கங்கள் படிக்க வேண்டும் என்று சொல்வார்கள். நிரலர்களும் இதற்கு விதிவிலக்கல்ல. ஒவ்வொரு நாளும், நாம் பலதரப்பட்ட நிரலர்களின் நிரலைப் படிக்கவேண்டும். பிறரது நிரலின் குறைநிறைகளை அறியும்போதுதான் நமது நிரலின் வடிவமைப்பை மேம்படுத்திக்கொள்ளவும், நாம் நிரலெழுதும் பாணியை மெருகேற்றிக்கொள்ளவும் முடியும்.