குறுக்க வெட்டும் அக்கறைகள்

கட்டற்ற கலைக்களஞ்சியமான விக்கிப்பீடியாவில் இருந்து.

கணினியியலில் குறுக்க வெட்டும் அக்கறைகள் என்பது முக்கிய அக்கறையோடு சேர்ந்து வரும் இதர அக்கறைகள். பொதுவாக இந்த அக்கறைகளை முதன்மை அக்கறைகளில் இருந்து பிரிப்பது கடினம் அல்லது இயலாது. அவற்றோடு பிணைந்தே வரும். Aspect-oriented programming போன்ற நிரல் முறைமைகள் குறுக்கு வெட்டும் அக்கறைகளை சிறப்பாக கவனத்தில் எடுத்துக் கொண்டுள்ளன.

எடுத்துக்காட்டு[தொகு]

பின்வரும் வைப்பக செயலியை கருத்தில் கொள்க. இதன் அடிப்படை செயற்பாடு எளிமையானது. ஒரு கணக்கில் போதிய பணம் இருந்தால், கேக்கப்பட்ட பணத்தை இன்னுமொரு கணக்குக்கு மாற்றுவதே இதன் செயற்பாடு. இதை யாவா மொழி தொடரியலில் பின்வருமாறு விபரிக்கலாம்.

 void transfer(Account fromAcc, Account toAcc, int amount) {
   if (fromAcc.getBalance() < amount) {
     throw new InsufficientFundsException();
   }
  
   fromAcc.withdraw(amount);
   toAcc.deposit(amount);
 }

மேற்கூறிய நிரல் சில அக்கறைகளை கருத்தில் கொள்ளவில்லை. பயனர் பண மாற்றுச் செய்ய தேவையான அனுமதி கொண்டுள்ளாரா என்று பாக்க வில்லை. தரவு விபத்துக்களை தவிர்க்க இது தரவுத்தள பரிவார்த்தனையாக இருக்க வேண்டும். கண்கானிக்க, பராமரிக்க இந்த செயற்பாடுகள் பதிவு செய்யப்பட வேண்டும். இந்த அக்கறைகளை கருத்தில் கொண்டால் மேல் சென்ன எளிய செயற்பாடு பின்வருமாறு சிக்கலாகிறது.

 void transfer(Account fromAccount, Account toAccount, int amount) throws Exception {
   if (!getCurrentUser().canPerform(OP_TRANSFER)) {
     throw new SecurityException();
   }
  
   if (amount < 0) {
     throw new NegativeTransferException();
   }

   if (fromAccount.getBalance() < amount) {
     throw new InsufficientFundsException();
   }
  
   Transaction tx = database.newTransaction();
   try {
      fromAccount.withdraw(amount);
      toAccount.deposit(amount);
 
      tx.commit();
      systemLog.logOperation(OP_TRANSFER, fromAccount, toAccount, amount);
   }
   catch(Exception e) {
      tx.rollback();
      throw e;
   }
 }

மேற்கூறிய எடுத்துக்காட்டில் இதர அக்கறைகள் முதன்மை செயற்பாடோடு பினைந்து கொண்டுள்ளன. முதன்மை அக்கறையை வணிக ஏரண அக்கறை என்று கூறுவதுண்டு. பாதுகாப்பு, தரவுத்தள பரிவார்த்தனை, பதிவுசெய்தல் போன்றவை குறுக்க வெட்டும் அக்கறைகள் ஆகும். மேற்கூறிய நிரலில் மாற்றங்கள் செய்வது கடினமாகிறது. இதைக் கவனத்தில் கொண்டு aspect oriented programming முறைமைகள் அமைகின்றன.

இவற்றையும் பாக்க[தொகு]