কীভাবে কার্যকরী কর্মসূচী [বন্ধ] করা যায়


41

সম্ভাব্য সদৃশ:
ফাংশনাল প্রোগ্রামিং বনাম ওওপি
ফাংশনাল প্রোগ্রামিং সহ পরিচালনাযোগ্য কোড কীভাবে লিখবেন?

ওওপি-তে, কোডের জন্য আপনার প্রতিষ্ঠানের প্রাথমিক ইউনিটটি শ্রেণি। জাভা, সি # এবং অনুরূপ ভাষাগুলিতে প্রায়শই ব্যবহৃত পদ্ধতিটি হ'ল শ্রেণীর নাম অনুসারে ফাইলের নাম সহ প্রতিটি শ্রেণীর জন্য একটি ফাইল থাকার আশেপাশে আপনার কোডটি সংগঠিত করা।

আপনি এই শ্রেণীর প্রত্যেককে একটি একক ধারণাকে গ্রুপ করার জন্য সংগঠনের একক হিসাবে বিবেচনা করতে পারেন।

এই ক্লাসগুলি নামস্থানগুলিতে থাকে যা প্রায়শই সমাধান / প্রকল্পের ফাইলগুলির ডিরেক্টরি কাঠামো অনুসরণ করে। নেমস্পেসগুলি প্রতিষ্ঠানের আরও একটি স্তর।

কার্যকরী ভাষায় বড় প্রকল্পগুলি সাধারণত কীভাবে সংগঠিত হয়?

আপনার ফাংশনগুলি বিভিন্ন ফাইলগুলিতে বিভক্ত করবেন কীভাবে আপনি নির্ধারণ করবেন?

ফাইলগুলির পাশে গ্রুপিংয়ের অন্যান্য ইউনিটগুলি কী ব্যবহৃত হয়?

কীভাবে একটি একক ফাইলের মধ্যে কোডটি সাধারণত সংগঠিত হয়?


18
@ এসলট What's stopping you from...ইয়ারস এবং প্রোগ্রামিংয়ের বছরগুলি একেবারেই আলাদা মানসিকতার সাথে, যে পর্যন্ত হাস্কেল কোড মানসিকভাবে গণনা করে না। এবং অবশ্যই আপনি ধরে নিচ্ছেন যে প্রকৃত প্রকল্পগুলি সর্বদা সঠিক এবং ঝরঝরেভাবে সংগঠিত হয় (সম্ভবত তারা আমার মতো
নুবুক কীভাবে

13
@ এসলট: আমি সর্বদা ওওপিতে প্রোগ্রাম করেছি। আমি কৌতূহলের বাইরে খুব সম্প্রতি কার্যকরী ভাষায় ছদ্মবেশ শুরু করেছি। আপনি বলেছেন: "কেন এখানে জিজ্ঞাসা করবেন?"। উত্তর: অভিজ্ঞ ব্যক্তিদের (বা সাইট হিসাবে এটি বিশেষজ্ঞরা রেখেছেন) যারা আমাকে বিষয়টিতে আলোকিত করতে পারে তাদের কাছ থেকে কিছু পরামর্শদাতা এবং অন্তর্দৃষ্টি পেতে। এটি কি এই সাইটের উদ্দেশ্য নয়? সমস্ত প্রোগ্রামারস বা এসও প্রশ্নের উত্তর দেওয়া যায় না: "আপনি নিজের জন্য কেন খুঁজে পাচ্ছেন না"? উত্তর হ্যাঁ, আপনি পারেন। তবে প্রশ্নটি জিজ্ঞাসার কারণ হ'ল বিষয়টির বিশেষজ্ঞের কাছ থেকে আরও ভাল / দ্রুত ফলাফল নেওয়া।
গিলস

5
@ এস.লোট: যদি তিনি কেবল র্যান্ডম কোডটি পড়ে থাকেন তবে কীভাবে তিনি জানতে পারবেন যে তারা যে সাংগঠনিক সিদ্ধান্ত নিয়েছে তা ভাল এবং খারাপ কিনা? এবং কেন তারা ভাল বা খারাপ?
কারসন 63000


4
@ এস.লট সংক্ষেপে বলতে গেলে, ভাষা বা দৃষ্টান্তের বিশেষজ্ঞ থাকা একটি সুসংগঠিত প্রকল্প চিহ্নিত করুন, সংস্থায় যে কোনও দুর্বলতা / ত্রুটি রয়েছে তা সনাক্ত করুন এবং কেবল কোডটি পড়া এবং প্রতিষ্ঠানের দিকে তাকানোর চেয়ে কেন আরও মূল্যবান তা ব্যাখ্যা করুন To ধারণাটি সহ এটি সুসংগঠিত।
থমাস Owens

উত্তর:


32

আমি সন্দেহ করি এটি ভাষার উপর নির্ভর করে। কার্যনির্বাহী প্রোগ্রামিং হিসাবে, আমি বেশিরভাগই হাস্কেলের মধ্যে ছড়িয়ে পড়েছি, সুতরাং আমি সেখানে এটি কীভাবে কাজ করে তা ব্যাখ্যা করতে যাচ্ছি।

হাস্কেল কোডটি "মডিউলগুলিতে" সাজানো হয়েছে যা মূলত কেবল ফাংশন এবং ডেটা ধরণের সংগ্রহ। প্রতিটি মডিউল একটি একক ফাইল। একটি মডিউল জাভা শ্রেণীর এবং জাভা প্যাকেজের মধ্যে একটি মিশ্রণের কিছু - মডিউলটি কী করে তার সঠিক সুযোগটি পরিবর্তিত হয়। কোন ফাংশন এবং টাইপ কনস্ট্রাক্টর রফতানি করতে হবে এবং কোনটি লুকাতে হবে তার উপর একটি মডিউলের নিয়ন্ত্রণও রয়েছে; এটি জাভা privateএবং একই রকম public

আমার নিজস্ব প্রোগ্রামগুলিতে, আমি মডিউলগুলি শব্দার্থকভাবে একটি কাজ করতে চাই ; এটি তাদের জাভা শ্রেণীর মতো করে তোলে কেবলমাত্র তারা একাধিক ডেটা ধরণের সংজ্ঞা দেয়। আমি স্ট্যান্ডার্ড লাইব্রেরি থেকে যে মডিউলগুলি ব্যবহার করি Data.Listসেগুলি প্যাকেজের মতো বেশি - তারা অনুরূপ ইউটিলিটি ফাংশনের একটি সেট সরবরাহ করে। এটি স্ট্যাটিক জাভা ক্লাসগুলির মতোও খুব মিল java.util.Arrays

মডিউলগুলি জাভা প্যাকেজগুলির মতোও রয়েছে যাতে তারা স্বচ্ছতার জন্য বাসা বেঁধে রাখতে পারে (আমি মনে করি না কোডে এটির কোনও প্রভাব আছে)। সাধারণভাবে, একটি একক প্রকল্পের জন্য, আমি এটিকে একটি নাম দিয়েছি (বলুন Project) এবং আমার সমস্ত মডিউল এটির (যেমন Project.Parseএবং Project.Run) অংশ হতে পারে । যদি আমি কোনও অ্যাপ্লিকেশনটির চেয়ে লাইব্রেরির মতো কোডটি লিখতাম তবে আমি এটি কী করছে, এর মতো Data.Listবা এর উপর ভিত্তি করে এটিকে সংগঠিত করব Control.Monad। অন্যান্য ভাষাগুলির মধ্যে একটি প্রধান পার্থক্য হ'ল হাসেল আইও-কে সীমাবদ্ধ রাখতে এবং এগুলিকে এক জায়গায় রাখার জন্য উত্সাহ দেয়। প্রচুর পরিমাণে মডিউলগুলি কোনও আইও করেন না এবং যে কোনও প্রকল্পের জন্য, আমি যতটা সম্ভব মডিউল যথাসম্ভব খাঁটি থাকতে চাই।

উদাহরণ হিসাবে, আমি একটি সাধারণ প্রোগ্রামিং ল্যাঙ্গুয়েজে কাজ করছি যা আমি টিপিএল কল করছি (কোনও কারণ ছাড়াই)। এর জন্য আমি দুটি সহজ মডিউল তৈরি করেছি: TPL.Parseযা ভাষার অভ্যন্তরীণ উপস্থাপনা এবং কীভাবে এটি বিশ্লেষণ করতে পারে তা সংজ্ঞায়িত করে এবং TPL.Runযা দোভাষী চালায় এবং ভেরিয়েবল এবং আইও এর সাথে ডিল করে। কোডটি সংকলন ও চালনার জন্য সাধারণত একটি Mainমডিউল থাকে যা শেষ হয় যা প্রোগ্রামের এন্ট্রি পয়েন্ট হয়ে থাকে।

একটি ফাইলের মধ্যে ফাংশনগুলি সংগঠিত করার ক্ষেত্রে উল্লেখযোগ্য স্বাধীনতা রয়েছে; এটিই আমি করতে পছন্দ করি। আমি অন্য কোথাও ব্যবহারের আগে আমার ডেটা প্রকারগুলি শীর্ষের দিকে সংজ্ঞায়িত করি। তথ্য প্রকারের সংজ্ঞা দেওয়ার পরে, আমি তাদের যথাযথ টাইপক্লাসগুলির অংশ তৈরি করার জন্য যা কিছু প্রয়োজন তা বাস্তবায়ন করি - এটি একটি ইন্টারফেস বাস্তবায়নের মতো। তারপরে আমি যথাযথ হিসাবে যুক্তি এবং বিভিন্ন সহায়ক ফাংশন অনুসরণ করি। অবশেষে, আমি আমার আইও ফাংশনগুলির খুব নীচে শেষ করতে চাই main। এটি কোনও আইও কী করছে এবং কোথায় প্রোগ্রামটি শুরু হচ্ছে তা এটি পরিষ্কার করে দেয়।

সুতরাং, সংক্ষেপে: ফাংশনগুলি মডিউলগুলিতে থাকে, যার প্রতিটিই একটি ফাইলের সমন্বয়ে গঠিত। বেশ কয়েকটি মডিউল একটি প্রোগ্রাম বা গ্রন্থাগার তৈরি করতে পারে; পূর্ববর্তীটিতে সাধারণত একটি Mainমডিউল থাকে যা এটির প্রবেশ বিন্দু। একটি ফাইলের মধ্যে, প্রতিষ্ঠানের জন্য বিভিন্ন বিকল্প রয়েছে, তবে আমি শীর্ষের কাছাকাছি, নীচের কাছে আইও এবং মাঝখানে যুক্তি যুক্ত করতে গ্রুপের ডেটা ধরণের পছন্দ করতে পছন্দ করি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.