কীভাবে কেউ এফপি করতে অভ্যস্ত কোডটি পড়া উচিত?


14

আমি প্রায় পাঁচ মাস আগে বিশ্ববিদ্যালয় থেকে স্নাতক হয়েছি এবং গত চার মাস ধরে স্থানীয় একটি স্টার্টআপে কাজ করছি। বিশ্ববিদ্যালয়ে থাকাকালীন আমি নিজে থেকে হাস্কেল, এফ # ইত্যাদি পড়াশোনা করেছি। আমাদের বিশ্ববিদ্যালয়ে জাভা শেখানো হয়েছিল, তবে খুব শীঘ্রই আমি কার্যকরী প্রোগ্রামিংয়ের মুখোমুখি হয়েছি এবং আমি জরুরী প্রোগ্রামিংয়ের চেয়ে অনেক বেশি সময় ব্যয় করেছি। ফলস্বরূপ, আমার মস্তিষ্ক একটি কার্যকরী চিন্তাভাবনার জন্য তারযুক্ত। আমি যে সংস্থায় যোগদান করেছি সেগুলি পাইথন ব্যবহার করে এবং কোডটি ভারীভাবে আবশ্যক। আবশ্যক কোডটি পড়তে আমার খুব কষ্ট হচ্ছে। আমি মিউটেশনগুলির ট্র্যাক রাখতে পারি না। যখন-যদি-অন্য-জন্য -... বাসা বেঁধে চার স্তরেরও বেশি গভীর হয়, আমি কোডে কী ঘটছে তার ট্র্যাক পুরোপুরি হারাব। এটি যুক্ত করার জন্য, পাইথন একটি গতিশীল ভাষা, সুতরাং কোডটিতে কোনও প্রকার নেই। এটা ' আমি কয়েক সপ্তাহ ধরে আমাদের কোডবেসের একটি অংশ (যা অনুমিত 'মাঝারি জটিল') বোঝার চেষ্টা করে চলেছি, তবে এটি বুঝতে এখনও আমি কোনও প্রশংসনীয় অগ্রগতি করতে পারি নি। এই কোডটি বোঝার জন্য আমাকে কীভাবে চলতে হবে সে সম্পর্কে দয়া করে আমাকে কিছু ব্যবহারিক কৌশল সরবরাহ করুন। আগাম ধন্যবাদ!

সম্পাদনা:
সম্ভবত আমারও উল্লেখ করা উচিত যে কোডটিতে আসলে অনেকগুলি মন্তব্য নেই এবং নামগুলিও খুব স্বজ্ঞাত নয়।


1
আপনি বরং কোন মন্তব্য বা ভুল মন্তব্য আছে? আমি নিশ্চিত যে আপনি যে শর্তগুলি উল্লেখ করেছেন তার অধীনে মন্তব্যগুলি ভাল হবে না।
ল্যারি কোলেম্যান

কোডটি "স্ব-মন্তব্য" হিসাবে চিহ্নিত করা যেতে পারে এমন কোডের সেই অতি ক্ষুদ্র উপসেটে না থাকলে আমার কমপক্ষে কিছু মন্তব্য থাকতে হবে, যা অন্যথায় অনিবার্য গীব্রিশের মাধ্যমে আমাকে গাইড করার জন্য কমপক্ষে সহায়ক ইঙ্গিতগুলির অন্তর্ভুক্ত থাকতে পারে! তবে এটাই তো আমি!
জন টোবলার

2
এমনকি অপরিহার্য প্রোগ্রামাররা তাদের পার্শ্ব-প্রতিক্রিয়া সীমাবদ্ধ করে অন্তত স্বজ্ঞাতভাবে এবং ছোট পদ্ধতিগুলি লেখেন। আমি মনে করি আপনি কেবলমাত্র একটি আদর্শের চেয়ে কম আদর্শ কোডবেসে এসেছেন।
মৌরিসিও শেফার

উত্তর:


14

উত্তরাধিকারের কোডটি বোঝা শক্ত। কার্যক্ষম বনাম প্রক্রিয়াগতের সাথে এটির প্রায় কোনও সম্পর্ক নেই।

  1. কোনও ধরণের মানচিত্র তৈরি করুন। পাইথন প্যাকেজ এবং মডিউলগুলির একটি উপাদান ডায়াগ্রাম। প্রতিটি মডিউলের জন্য, আপনাকে শ্রেণি চিত্রগুলি তৈরি করতে হবে।

  2. পাইথন ইন্টারপ্রেটার ব্যবহার করুন। আপনার মডিউলগুলি আমদানি করতে, অবজেক্টগুলি তৈরি করতে এবং তাদের ইন্টারেক্টিভভাবে অনুশীলন করতে সক্ষম হওয়া উচিত। এজন্য পাইথন জনপ্রিয়। type(x)কোনও ভেরিয়েবল ( এক্স ) আসলে কী তা দেখতে আপনি মুদ্রণ করতে পারেন ।

  3. সন্দেহ হলে ইউনিট পরীক্ষার কোডটি অবশ্যই পড়তে ভুলবেন না। যদি কোনও ইউনিট পরীক্ষার কোড না থাকে তবে একটি নতুন কোড বেস শিখার পাশাপাশি আপনার বড় ও বড় সমস্যা রয়েছে।

  4. জিনিস লিখুন। পাশের নথিগুলি দিয়ে শুরু করুন। তারপরে, যখন আপনি ভাবেন যে আপনি কী জানেন কী করছেন, তখন ফাংশন, পদ্ধতি এবং ক্লাসগুলিতে ডকস্ট্রিং মন্তব্য যুক্ত করুন। এগুলি প্রাথমিক এবং প্রায়শই যুক্ত করুন।

  5. আপনি যা শিখছেন তা সংগ্রহ করতে 'অটোডোক' দিয়ে স্পিনিক্স ব্যবহার করুন।

সবচেয়ে গুরুত্বপূর্ণ অংশটি এটি। আপনার মাথায় জিনিস রাখা শক্ত। ডকুমেন্টেশন ফাইলগুলিতে জিনিস রাখা আরও সহজ।


6
+1 টি। কোনও লিগ্যাসি কোড বোঝা শক্ত, এমনকি যদি তা ভাল লেখা থাকে।
কোয়ান্ট_দেব

12

আবশ্যক কোডটি পড়তে আমার খুব কষ্ট হচ্ছে। যখন-যদি-অন্য-জন্য -... বাসা বাঁধে চার স্তরেরও বেশি গভীর হয়, আমি কোডে কী ঘটছে তার ট্র্যাকটি পুরোপুরি হারাব।

অপেক্ষা করুন ... যে কেউ নীচে বাসা বাঁধার এত গভীর স্তর সহ কোডটিকে পুরোপুরি হারিয়ে ফেলে oo বা লিনাস টোরভাল্ডস যেমন লিখেছেন:

আপনার যদি 3 টিরও বেশি মাত্রায় ইন্ডেন্টেশন প্রয়োজন হয় তবে আপনি যে কোনও উপায়েই স্ক্রু হয়ে গেছেন এবং আপনার প্রোগ্রামটি ঠিক করা উচিত।

সম্ভবত আমার এও উল্লেখ করা উচিত যে কোডটিতে আসলে অনেকগুলি মন্তব্য নেই এবং নামগুলিও খুব স্বজ্ঞাত নয়।

এটি এমন শোনাচ্ছে না যে আপনার সংস্থা সাধারণ সেরা অভ্যাসগুলি মেনে চলে।

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

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

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


ইন্ডেন্টেশন সমস্যাটি আরও খারাপ হতে পারে: যখন ভাষাটি কলামার কোড হয় (আরপিজির মতো), এবং কোনও আসল ইন্ডেন্টেশন হয় না । কিছু সরঞ্জাম এটি ঠিক করার চেষ্টা করে ...
ক্লকওয়ার্ক-মিউজিক

2

যদি (আপনার বর্ণিত খারাপ অভ্যাসগুলি থেকে বড় যদি হয়) ইউনিট পরীক্ষাগুলি রয়েছে, তবে কোডটি কীভাবে পরীক্ষা করা হয় তা দেখতে আপনি সেগুলির দিকে নজর দিতে পারেন। কোডটি কী করে তা এটি একটি ভাল অন্তর্দৃষ্টি সরবরাহ করতে পারে।

অন্যথায়, আমি আরও জেনেরিক পাইথন কোডটি লেখার পদ্ধতিতে অভ্যস্ত হওয়ার জন্য পড়ার পরামর্শ দেব।


2

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

আমি প্রোগ্রামিং ওসিএএমএল এবং হাস্কেল থেকে প্রোগ্রামিং জাভা এবং পাইথনে গিয়েছিলাম এবং আমার অভিজ্ঞতা হ'ল জরুরী প্রোগ্রামিং গতিশীল টাইপিংয়ের মতো বড় লাফ নয়, যা আজকের দিনে একে অপরকে অনুভব করে।


1

আমি আপনাকে ব্রেকপয়েন্টগুলি রাখার পরামর্শ দিয়েছি এবং নেক্সট কমান্ডটি ব্যবহার করা শুরু করুন (যেন আপনি ডিবাগ করছেন), এটি আপনাকে প্রবাহটি বুঝতে সহায়তা করবে (সম্ভবত শাখাগুলিতে, এমন পথ রয়েছে যেগুলি গ্রহণ করার সম্ভাবনা বেশি রয়েছে, যাদের জন্য আপনাকে ঘনত্বে ঘন করা উচিত) কোডটির সাধারণ ধারণা)।

(আমি সঙ্গে ভাল ফলাফল ছিল অন্ধকার সহ PyDev অন্ধকার প্লাগইন হিসাবে)

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