পোস্ট
বোঝাপড়া শুরু হয় প্রকাশনীয় নামের মাধ্যমে
৩০ সেপ্টেম্বর, ২০১৯ • 3 মিনিট পড়া
২০১৮ সালে, আমি একটি বড় প্রকল্পে এর উন্নয়নের মাঝপথে যোগ দিয়েছিলাম। মূল প্রকৌশলীরা চলে গিয়েছিলেন জটিল এবং নথিভুক্ত কোড রেখে। এই ধরনের কোডের সাথে কাজ করা চ্যালেঞ্জিং কারণ আপনি প্লাম্বিং এবং ব্যবসায়িক ডোমেইনের মধ্যে পার্থক্য করতে পারবেন না। এটি ডিবাগিং কঠিন করে তোলে এবং পরিবর্তনগুলি অপ্রত্যাশিত করে কারণ আপনি প্রভাব জানেন না। এটি একটি বই সম্পাদনা করার মতো যখন আপনি শব্দগুলি বুঝতে পারেন না।
অনেক প্রকৌশলী বিশ্বাস করেন যে সাফল্যের পরিমাপ হল যখন কোড সংকলিত হয়। আমি বিশ্বাস করি এটি হল যখন অন্য একজন প্রকৌশলী (বা আপনি ছয় মাস পরে) আপনার কোডের “কেন” বোঝেন। মূল প্রকৌশলীরা ভবিষ্যতের প্রকৌশলীদের প্রতিবন্ধী করেছিলেন নথিভুক্ত না করে এবং অস্পষ্ট নাম ব্যবহার করে। নামগুলি কখনও কখনও পূর্ববর্তী প্রকৌশলীর চিন্তাপ্রক্রিয়ার একমাত্র জানালা।
ডোনাল্ড কনুথ বিখ্যাতভাবে বলেছেন:
প্রোগ্রামগুলি মানুষের দ্বারা পড়ার জন্য এবং শুধুমাত্র ঘটনাক্রমে কম্পিউটারের দ্বারা সম্পাদনের জন্য। – ডোনাল্ড কনুথ
নামকরণ
নামকরণ কঠিন কারণ এটি একটি অ্যাপ্লিকেশনে একটি অংশ কোথায় এবং কীভাবে ফিট করে তা লেবেল এবং সংজ্ঞায়িত করার প্রয়োজন।
ফিল কার্লটন, নেটস্কেপে থাকাকালীন পর্যবেক্ষণ করেছিলেন:
কম্পিউটার বিজ্ঞানে শুধুমাত্র দুটি কঠিন জিনিস রয়েছে: ক্যাশে অবৈধতা এবং জিনিসের নামকরণ।
— ফিল কার্লটন
আমরা আমাদের কোড দেখি আমরা যে শব্দ এবং নাম ব্যবহার করি তার লেন্সের মাধ্যমে। নামগুলি পরবর্তী প্রকৌশলীর বোঝার জন্য একটি ভাষা তৈরি করে। এই ভাষা চিত্রিত করে কীভাবে লেখক ব্যবসায়িক ডোমেইন এবং প্রোগ্রামিং ভাষা সেতুবন্ধন করেছেন।
লুডউইগ উইটগেনস্টাইন, বিংশ শতাব্দীর প্রথম অর্ধে একজন দার্শনিক, বলেছিলেন:
আমার ভাষার সীমা মানে আমার বিশ্বের সীমা। – লুডউইগ উইটগেনস্টাইন
আমাদের সফটওয়্যারের ভাষা শুধুমাত্র আমরা যে নামগুলি ব্যবহার করি তার মতোই বর্ণনামূলক এবং অস্পষ্ট নাম ব্যবহার করা সফটওয়্যারের উদ্দেশ্য অস্পষ্ট করে; বর্ণনামূলক নাম ব্যবহার করা স্পষ্টতা এবং বোঝাপড়া নিয়ে আসে।
কল্পনা করুন এমন একটি দেশ পরিদর্শন করছেন যেখানে আপনি ভাষা কথা বলেন না। বাথরুম ব্যবহার করার জন্য অনুরোধের মতো একটি সাধারণ অনুরোধ বিভ্রান্ত চেহারা নিয়ে আসে। যোগাযোগ করতে অক্ষমতা হতাশাজনক এবং এমনকি ভয়ঙ্করও। একজন প্রকৌশলী একই অনুভব করেন যখন বিভ্রান্তিকর, অস্পষ্ট বা আরও খারাপ, বিভ্রান্তিকর নামের সম্মুখীন হন।
এই অনুভূতি সেরা অভিজ্ঞতা।
অভিজ্ঞতা
কোডের প্রথম স্নিপেট পরীক্ষা করুন, এই কোড কী করে? কেন কী?
আপনার সময় নিন।
public class StringHelper
{
public string Get(string input1, string input2)
{
var result = string.Emtpy;
if(!string.IsNullOrEmtpy(input1) && !string.IsNullOrEmtpy(input2))
{
result = $"{input1} {input2}";
}
return result;
}
}
উপরের কোড দুটি স্ট্রিংয়ের একটি সাধারণ সংযোজন। কোড যা বলে না তা হল “কেন”। “কেন” এত গুরুত্বপূর্ণ, এটি ছাড়া, প্রভাব বোঝা ছাড়াই আচরণ পরিবর্তন করা কঠিন। অবশ্যই, কোডের ব্যবহার তদন্ত করা সম্ভবত এর “কেন” প্রকাশ করবে, কিন্তু এটিই বিষয়। আপনার কোডের উদ্দেশ্য আবিষ্কার করতে হবে না, পরিবর্তে, লেখকের সূত্র রেখে যাওয়া উচিত, এটি তাদের দায়িত্ব।
আসুন কোডটি পুনরায় দেখি, কিন্তু একটু “কেন” ছিটিয়ে দিয়ে।
আবার, আপনার সময় নিন, এই কোড পড়ার সময় আপনি যে পার্থক্য অনুভব করেন তা পর্যবেক্ষণ করুন।
public class FirstAndLastNameFormatter
{
public string Concatenate(string firstName, string lastName)
{
var fullName = string.Emtpy;
if(!string.IsNullOrEmtpy(firstName) && !string.IsNullOrEmtpy(lastName))
{
fullName = $"{firstName} {lastName}";
}
return fullName;
}
}
“কেন” কোডকে জীবন্ত করে তোলে, পড়ার জন্য একটি গল্প আছে।
যোগাযোগ
পরবর্তী প্রকৌশলীর কাছে অভিপ্রায় এবং ডিজাইন যোগাযোগ করা সফটওয়্যারকে বাঁচতে এবং বৃদ্ধি পেতে দেয় কারণ যদি প্রকৌশলীরা সফটওয়্যার সংশোধন করতে না পারেন, এটি মারা যায়। এটি একটি ট্র্যাজেডি, আরও বেশি যখন এটি দুর্বল ডিজাইন এবং প্রকাশনীয়তার অভাবের ফলাফল — প্রতিটি জ্ঞানের সাথে প্রতিরোধযোগ্য।
পরবর্তী প্রকৌশলীর একটি অনুগ্রহ করুন এবং আপনার কোডে প্রকাশনীয় হন। বর্ণনামূলক নাম ব্যবহার করুন এবং “কেন” ক্যাপচার করুন কারণ কে জানে, পরবর্তী প্রকৌশলী আপনি হতে পারেন।
লেখক: চাক কনওয়ে একজন এআই ইঞ্জিনিয়ার যার কাছে প্রায় ৩০ বছরের সফটওয়্যার ইঞ্জিনিয়ারিং অভিজ্ঞতা রয়েছে। তিনি ব্যবহারিক এআই সিস্টেম তৈরি করেন—কন্টেন্ট পাইপলাইন, অবকাঠামো এজেন্ট এবং সরঞ্জাম যা বাস্তব সমস্যার সমাধান করে—এবং তার শেখার বিষয়গুলি শেয়ার করেন। তার সাথে সোশ্যাল মিডিয়ায় সংযোগ করুন: X (@chuckconway) অথবা তাকে YouTube এবং SubStack এ দেখুন।