পাইথন উত্স কোডটি আমার কীভাবে সংগঠিত করা উচিত? [বন্ধ]


99

আমি পাইথন দিয়ে শুরু করছি (এটি শট দেওয়ার উচ্চ সময়) এবং আমি কয়েকটি সেরা অনুশীলন খুঁজছি।

আমার প্রথম প্রকল্পটি একটি সারি যা একাধিক থ্রেডে কমান্ড-লাইন পরীক্ষা চালায়। আমি একটি দীর্ঘ main.pyফাইল পেতে শুরু করছি , এবং আমি এটি ভেঙে দিতে চাই। সাধারণভাবে, আমি সন্ধান করছি: পাইথন প্রোগ্রামাররা কীভাবে একাধিক উত্স ফাইলগুলি সংগঠিত করে? এমন কোনও কাঠামো আছে যা আপনার পক্ষে কাজ করে?

আমার নির্দিষ্ট প্রশ্নগুলির মধ্যে রয়েছে:

  1. প্রতিটি শ্রেণি পৃথক ফাইলে থাকা উচিত?
  2. উত্স কোডের তুলনায় আমার ইউনিট পরীক্ষাগুলি কীভাবে পরিচালনা করা উচিত?
  3. যেখানে ডক মন্তব্য রাখতে হবে, বিশেষত কমান্ড-লাইন অপারেশনের জন্য?
  4. আমি যদি একাধিক ডিরেক্টরি ব্যবহার করি তবে আমি কীভাবে তাদের মধ্যে ক্লাস আমদানি করব?

আমি সম্ভবত এখানে পরীক্ষা এবং ত্রুটি দ্বারা আমার নিজের সিদ্ধান্তে কিছু আঁকতে পারি, তবে আমি বরং ভাল কিছু থেকে শুরু করব ।



4
পাইথন ডক্স থেকে আরও কিছু দরকারী তথ্য এখানে। <br> docs.python.org/3/tutorial/modules.html#packages
rda3mon

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

উত্তর:


32

নিবন্ধ এরিক উল্লেখ করার সন্ত্রস্ত কারণ এটি বৃহৎ পাইথন কোড ঘাঁটি সাংগঠনিক বিবরণ জুড়ে।

আপনি যদি গুগল থেকে এখানে অবতরণ করেছেন এবং কীভাবে একটি বৃহত উত্স ফাইলটি একাধিক, আরও পরিচালনযোগ্য, এমন ফাইলগুলিতে বিভক্ত করবেন তা সন্ধান করার চেষ্টা করছি আমি সংক্ষেপে প্রক্রিয়াটি সংক্ষেপ করব ze

ধরুন বর্তমানে আপনার কাছে ডাকা একটি ফাইলের সবকিছু রয়েছে main.py:

  • একই ফোল্ডারে অন্য উত্স ফাইল তৈরি করুন (আসুন আমাদের utils.pyএই উদাহরণটির জন্য কল করুন )
  • যাই হোক না কেন ক্লাস, ফাংশন, বিবৃতি, ইত্যাদি আপনার কাছ থেকে প্রয়োজন সরান main.pyমধ্যেutils.py
  • ইন main.pyউপরের একটি একক লাইন যোগ করুন:import utils

ধারণামূলকভাবে এটি যা করে তা হ'ল utilsঅন্য উত্স ফাইলে ডাকা একটি নতুন মডিউল তৈরি করা । তারপরে আপনি এটি যেখানে প্রয়োজন সেখানে আমদানি করতে পারেন।


আপনি কি এরিকের নির্দেশিত নিবন্ধটি মনে রেখেছেন? আমি এই প্রশ্ন / উত্তরের জন্য এরিকের সন্ধান করতে পারি না
ড্যানিয়েল রুকি

7
@ ড্যানআর, হ্যাঁ, এটি নিবন্ধটি । কোনও কারণে একজন মডারেটর তার উত্তর ৫ deleted টি করে থাকা সত্ত্বেও, মুছে ফেলা হয়েছে।
ড্রয় নোকস

4
@ ড্র্রুনোকস: আমি মনে করি এটি কেবলমাত্র লিঙ্ক-উত্তর হিসাবে মুছে ফেলা হয়েছে; কেবল যদি তিনি নিবন্ধটির মূল বিষয়গুলি সংক্ষিপ্ত করে রেখেছিলেন।
স্মি

4
দুর্ভাগ্যক্রমে নিবন্ধটি এখন একটি মৃত লিঙ্ক :-(। সর্বশেষতম সংরক্ষণাগার সংস্করণটি এখানে রয়েছে: web.archive.org/web/20190714164001/http://…
ইগোর ব্রেজক

7

আপনার কোড এবং পরীক্ষাগুলি যেভাবে সংগঠিত করা উচিত আপনি যে কোনও ওও ভাষার ক্ষেত্রে ঠিক একই রকম।

আমি যেভাবে এটি করি তার উত্তর। এটি সঠিক নাও হতে পারে তবে আমার পক্ষে কাজ করে

  1. আপনার কার্যকারিতা কীভাবে বিভক্ত হবে তা নির্ভর করে। আমার মূল পাইথন অ্যাপ্লিকেশানের জন্য আমার কাছে প্রবেশের পয়েন্টগুলির জন্য ক্লাস এবং তারপরে কার্যকারিতার বিভিন্ন বিটের প্যাকেজগুলির সাথে 1 ফাইল রয়েছে
  2. আমি গ্রহনের জন্য পাইডেভ ব্যবহার করি এবং এটি জাভা-র মতো করে রাখি।
>  Workspace
>     |
>     |-Src
>     |   |-Package1
>     |   |-Package2
>     |   |-main.py
>     |-Test
>         |-TestPackage1
>         |-TestPackage2
  1. সমস্ত কিছু ট্র্যাক রাখতে সর্বত্র ডকস্ট্রিং ব্যবহার করুন
  2. প্রাসঙ্গিক __init__.pyফাইলগুলি ফোল্ডারে রয়েছে তা নিশ্চিত করার পরে । এটি কেবল একটি সাধারণ ঘটনাfrom module import class

5
একটি সতর্কতা, যদিও: জাভা প্যাকেজ, ফাইল এবং ক্লাসগুলির সাথে একরকম একনায়কতান্ত্রিক সম্পর্ক রাখে। কখনও কখনও আমি আমার চেয়ে বেশি উপায় উত্স ফাইল দিয়ে শেষ করি। কিছু সংস্থার সম্মেলন - যেমন - (নেস্টেড) অভ্যন্তরীণ ক্লাসগুলি এড়ানো বা ফাইলের "সহায়ক" ক্লাসগুলি এড়ানো - সংকলকের প্রয়োজনীয়তার বাইরেও এটিকে আরও খারাপ করে তোলে। এটি সুশৃঙ্খল রাখুন, এবং একটি শ্রেণিবিন্যাস দরকারী, কিন্তু মেক-ওয়ার এড়ানোর চেষ্টা করুন।
রোবপ্রোগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.