আমরা যে কোডগুলো লিখি সেগুলো সাধারণত হাইলেভেল(high-level) প্রোগ্রামিং ভাষায় (যেমন- জাভা)। এর প্রধাণ কারণ, হাইলেভেল প্রোগ্রামিং ভাষাগুলো মানুষের ভাষার কাছাকাছি। এতে করে আমাদের বোঝার সুবিধা হয়। একজন আরেকজনের সহজে কোড পড়তে ও বুঝতে পারে। এইকোডগুলো এজন্যই এভাবে লেখা হয়। কম্পিউটার কিন্তু আমাদের এই হাইলেভেল কোডগুলো বুঝতে পারেনা, এজন্য কম্পাইলারের দরকার হয়। আমাদের কোডগুলো কম্পাইল করার পর মেশিন যাতে বুঝতে পারে এমন কোডে রূপান্তরিত করা হয়।
সুতরাং দেখা যাচ্ছে, কম্পিউটার মূলত মেশিন কোড পড়ে। আমাদের পক্ষে মেশিনকোড পড়া কষ্টদায়ক বা আমরা তা পারি না। একটি সফটওয়্যার তৈরি করা শেষ হয়ে গেলে একে অনেকদিন মেইনটেইন করতে হয়। এর অর্থ হচ্ছে এই যে, এই সফটওয়্যারটি যতদিন মানুষ ব্যবহার করবে ততদিন এর কোডগুলো নিয়ে কাজ করতে হয়, নতুন নতুন সমস্যার সমাধান যুক্ত করতে হয়, কোনো বাগ বা ত্রুটি থাকলে সেগুলোকে সমাধান করতে হয়। একেই মেইনটেনেনিং (maintaining) বলা হয়। এর বাংলা হতে পারে রক্ষা বা প্রতিপালন করা। একটি সফটওয়্যারের পেছনে শতকরা ৮০ ভাগ খরচ চলে যায় এই মেইনটেনেন্সে। বর্তমানে অনেক জটিল ও বড় মাপের সফটওয়্যারগুলো সবসময় টিম নিয়ে তৈরি করা হয়। একার পক্ষে কখনো বড় কোনো সফটওয়্যারের কোড লেখা বা মেনইটেইন করা সম্ভব হয় না। তাছাড়া কোনো একটি সফটওয়্যার প্রজেক্টের মূল প্রোগ্রামার বা ডেভেলপার সারা জীবন ধরে একই সফটওয়্যার মেইনটেইন করে না। নতুন ডেভেলপারকে পুরোনো কোডগুলো পড়ে বুঝতে হয়। কোডগুলো পড়ে বুঝতে হলে কোডগুলোকে এমনভাবে লিখতে হবে যাতে সহজে পড়ে বোঝা যায়। এখন একেকজন যদি একেকভাবে কোড লিখে, তাহলে এই বোঝার প্রক্রিয়াটি অনেক কষ্টকর ও সময়সাপেক্ষ হয়ে যায়।
আমরা যদি কতগুলো নিয়ম মেনে কোডগুলো লিখি, তাহলে এই কোড পড়ে বোঝার প্রক্রিয়টি সহজ হয়ে যায়। এই নিয়মগুলোকে কোডিং কনভেনশন বলা হয়। ভালো প্রোগ্রামার বা ডেভেলপাররা এই নিয়মগুলো কঠিনভাবে করে মেনে
চলে। উল্টোভাবেও বলা হয়, একজন ভালো প্রোগ্রামার বা ডেভেলপারকে চেনার উপায় হচ্ছে তার কোড। তার কোড দেখে যদি সহজেই পড়ে বোঝা যায়, তাহলে নিশ্চিৎভাবে তাকে ভালো প্রোগ্রামার বা ডেভেলপার বলা যেতে পারে।
[spacer height=”20px”]
জাভা প্রোগ্রামিংয়ের জন্য এরকম বেশকিছু নিয়ম বা কনভেনশন রয়েছে। নিচে জাভা কনভেনশনের কতগুলো লিংক দেওয়া হলো-
https://google.github.io/styleguide/javaguide.html
http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
https://github.com/twitter/commons/blob/master/src/java/com/twitter/common/styleguide.md