আপনি অন্যের কোডটি কীভাবে পড়বেন? [বন্ধ]


23

প্রায় প্রতিটি উন্নত প্রোগ্রামার বলে যে এটি অন্যান্য পেশাদারদের কোড পড়তে খুব দরকারী। সাধারণত তারা ওপেন সোর্স পরামর্শ দেয়।

আপনি এটা পড়েন নাকি? আপনি যদি করেন তবে কোডটি পড়ার পদ্ধতিটি কতবার এবং কী কী? এছাড়াও, নতুনদের জন্য এসভিএন - ফাইলগুলির একটি গোছা নিয়ে কাজ করা কিছুটা কঠিন। সমাধান কি?

উত্তর:


25

আপনি এটা পড়েন নাকি?

হ্যাঁ।

আপনি যদি, কত ঘন ঘন

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

এবং কোড পড়ার পদ্ধতি কী?

উম। খুলুন এবং পড়ুন।

এছাড়াও, নতুনদের জন্য এসভিএন - ফাইলগুলির একটি গোছা নিয়ে কাজ করা কিছুটা কঠিন। সমাধান কি?

খুলুন এবং পড়ুন। তারপরে আরও পড়ুন।

এটা সহজ না. কিছুই এটিকে সহজ করে না। বোঝার মতো কোনও রয়্যাল রোড নেই। এটা কাজ লাগে।


উত্তর দেওয়ার জন্য আপনাকে ধন্যবাদ। কোডটি ভাল কিনা তা নির্ধারণের উপায় কী? কারণ প্রতিটি ওপেন সোর্স প্রকল্পটি বাস্তব পেশাদাররা করেন না?
সের্গেই

1
@ সার্জি: "কোডটি ভাল কিনা তা নির্ধারণের উপায় কী?" কোড পড়ুন। "ভাল" বিষয়গত হয়। যদি এটি সহায়ক হয় এবং আপনি এটি বুঝতে পারেন তবে এটি ভাল। যদি এটি বিভ্রান্তিকর হয়, বা আসলে কাজ করে না তবে এটি ভাল নয়। অনেকগুলি, অনেক গুণাবলীর বৈশিষ্ট্য রয়েছে: রক্ষণাবেক্ষণযোগ্য, সুরক্ষিত, অভিযোজ্য, উচ্চ-সম্পাদনা ইত্যাদি etc. ইত্যাদি, কোডগুলি একটিতে ভাল এবং অন্যটিতে কম ভাল হতে পারে।
এস। লট

7
আমি প্রতিহত করতে পারিনি: osnews.com/images/comics/wtfm.jpg
গ্যারি উইলফবি

@ সেরজে - যদিও এটি এখন পর্যন্ত লেখা সবচেয়ে বড় কোড, আপনি যদি এটি পড়তে না পারেন (আপনার অভিজ্ঞতার স্তরের কারণে) তবে এটি আপনার কোনও ভাল করবে না। যদিও আপনি এটি আপনার সময়ের সেরা ব্যবহার হিসাবে নাও দেখতে পাচ্ছেন, আপনি খারাপভাবে লিখিত কোডের সংস্পর্শে যাচ্ছেন, যাতে আপনি পার্থক্যটিও শিখতে পারেন। এস.লোট যেমন বলেছেন, এটি কাজ এবং সময় নেয়।
JeffO

আমি যারা বসে বসে কোড পড়তে পারি তারা যেমন কোনও উপন্যাস পড়ার মতো প্রশংসা করি, তখন আমি মাঝে মাঝে এটিকে কিছুটা ক্লান্তিকর বলে মনে করি। আমি বুঝতে পেরেছি যে আমার জন্য 'রিডিং কোড' আমি যে কার্যক্রমগুলি সম্পাদন করেছি তার বর্ণনা দেয় না - আমি যা করি তার জন্য একটি ভাল শব্দগুচ্ছটি হল 'কোড বোঝা' এবং এতে ডকুমেন্টেশন পড়া, এটি একটি ডিবাগারে পা রেখে এমনকি পরীক্ষাগুলি পড়াও জড়িত। আমি কোড রিডিং সম্পর্কে একটি দীর্ঘ পোস্ট লিখেছিলাম - টেকনিখিল.ওয়ার্ডপ্রেস.com
নিখিল

9

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

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

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


পঠন কোডের একটি দিক বিমূর্ততা। উত্সগুলি কীভাবে সংগঠিত হয় তা অনুসন্ধান করার মতো বিষয়গুলি অবশ্যই কোড রিডিংয়ের প্রক্রিয়াটিকে বিমূর্ত করবে।
ডেভিড গাও

5

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

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

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


4

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


1
+1: আমিও। // আমার একবার একজন বস ছিলেন যিনি রিফ্যাক্টরিংটি লক্ষ্য করেছিলেন এবং সময় নষ্ট করার জন্য আমাকে অভিযুক্ত করেছিলেন। সে বুঝতে পারছিল না। কি বোকা.
জিম জি।

2

"গুচ্ছ ফাইলগুলির" সাথে কীভাবে সমস্যা হয়? আপনি যখন নিজের কোডটি লেখেন তখন এর থেকে আলাদা নয়, যদি আপনি এটির দলিল না করে তার প্রতিষ্ঠানের পূর্ব জ্ঞান না রাখেন।

আপনি যদি দাবি করা প্রোগ্রামার হিসাবে প্রকল্পের কাঠামোটিকে "গুচ্ছ ফাইলগুলি" থেকে বের করতে না পারেন তা হয় এটি অত্যন্ত দুর্বল সংগঠিত প্রকল্প, বা আপনি একজন অযোগ্য প্রোগ্রামার (বা চরম ক্ষেত্রে, উভয়ই)।

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


3
"সময় লাগবে" "একটি বোঝাপড়া তৈরি করতে" "হার্ড" এর সংজ্ঞাটি প্রায় is কেবলমাত্র এটি এমন একটি সমস্যা যার জন্য আমাদের প্রতিদিনের সাথে মোকাবিলা করার আশা করা হয় এটি এটিকে কম কঠিন করে তোলে না। "আমি এই পরিবর্তনটি কোথায় করব?" এমনকি পেশাদারদের মধ্যে একটি সাধারণ প্রশ্ন। এছাড়াও, সোর্স নিয়ন্ত্রণ এবং বৃহত্তর কোড বেসগুলির সাথে ডিল করা কলেজ শিক্ষার অন্যতম বিশাল গর্ত। আমি মনে করি আমি কলেজে এক বা দুটি প্রকল্প করেছি যার জন্য একাধিক উত্স ফাইলের প্রয়োজন ছিল এবং সেগুলি প্রায় 10 টি ফাইল পেয়েছিল।
কার্ল বিলেফেল্ড

0

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

তবে এগুলি ব্যতীত, ভাষা, প্রোগ্রামিং কৌশলগুলি এবং জটিল কোডটিতে ডুব দিতে সক্ষম হওয়ার কোডটির উদ্দেশ্য সম্পর্কেও এটি একটি শালীন পরিমাণের জ্ঞান গ্রহণ করে।

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


0

"প্রথমে, উচ্চ স্তরে শুরু করুন, একটি পাখি-চোখের ভিউ" দেখার পরে @ বেরিন লরিটস্ সুপারজড হিসাবে আপনি যদি ইউনিটেটস এবং / বা ইন্টিগ্রেশনসেটের কোনও সন্ধান করতে পারেন।

ইউনিটেটস কীভাবে (এপিআই) বিশদ কাজ করে তা দেখতে আকর্ষণীয়।

ইন্টিগ্রেশন সবচেয়ে ভালভাবে businesprocesses উপর একটি ভাল ওভারভিউ দেয়।

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