কোড বিন্যাসকরণ: একটি শ্রেণিবদ্ধ ফাইলের মধ্যে কল স্তরক্রমের ভিত্তিতে ফাংশনগুলি আউট করা?


10

বব মার্টিনের "ক্লিন কোড" এর একটি পরামর্শ আমাকে আমার মাথা চুলকানো হয়েছে .. "একবার যদি ফাংশন অন্যটিকে কল করে তবে সেগুলি উল্লম্বভাবে কাছাকাছি হওয়া উচিত এবং কলারকে কলির উপরে হওয়া উচিত"

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

টিপটির পিছনে ধারণাটি দুর্দান্ত বলে মনে হচ্ছে তবে "আমাকে এই শ্রেণীর পাবলিক ইন্টারফেসটি দেখি" এর মতো অন্যান্য পরিস্থিতি আরও খারাপ হতে পারে। হতে পারে চাচা বব ছোট ক্লাসগুলিতে ব্যাংকিং করছে এবং দেখার ধরণের আইডিই সমর্থন ...

কেউ কি বর্ধিত সময়ের জন্য এটি চেষ্টা করে?

আপডেট: মনে হচ্ছে একটি কোড-স্নিপেট ক্রমযুক্ত

class SomeType()
{
  /// fields, ctors, et. all
  public void Method1()   { // calls HelperMethod1 and HelperMethod2 }
  private void HelperMethod1 { // calls HelperMethod3 }
  private void HelperMethod3 {}
  private void HelperMethod2 {}

  public void Method2 () { // and so on... }

}

2
তীব্র "আঙ্কেল বব" বাক্সে ঠিক তীক্ষ্ণ পেন্সিল নয়।
নিল বাটারওয়ার্থ

1
ধারণাটি কেবল "নিতু-কৌতুকপূর্ণ বিবরণের আগে আমাকে বড় ছবি দিন" is প্রয়োজনীয় হিসাবে অভিযোজিত।
রায়ান কুলিপার

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

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

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

উত্তর:


2

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

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

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


আইডিইর জন্য +1; আইডিই যত ভাল হবে
তত কমকেই এই

1

মুল বক্তব্যটি হ'ল জিনিসগুলি কল করার চেয়ে আকর্ষণীয় নয়। একটি পদ্ধতি অন্য পদ্ধতিগুলিকে যত বেশি কল করে, তত বেশি সম্ভাবনা থাকে যে সেই পদ্ধতিটি বস্তুর বাহ্যিক এপিআইর অংশ (বাস্তবায়নের বিশদ হওয়ার বিপরীতে)। এর অর্থ শ্রেণীর বাহ্যিক এপিআই - জনসাধারণের পদ্ধতিগুলি, যদি আপনার ভাষা সেই ধারণাকে সমর্থন করে - স্বাভাবিকভাবে ফাইলটির শীর্ষে থাকা "চাওয়া" হবে, এই পদ্ধতিগুলি সন্ধান করা আরও সহজ করে তুলবে। বিপরীতে, সহায়ক ফাংশন এবং এ জাতীয় ফাইলটির নীচে থাকতে "চান"।

(আমি ধারণার ব্যাখ্যা দিচ্ছি, এর কার্যকারিতা মূল্যায়ন করছি না।)


হ্যাঁ তবে এর অর্থ সমস্ত পাবলিক ফাংশনগুলি এক গ্রুপ হিসাবে ফাইলের শীর্ষে ভাসতে হবে। প্রচলিত পদ্ধতি প্রস্তাবিত পদ্ধতিটি ভিন্ন (বা কমপক্ষে আমি এটি কীভাবে পড়ি) .. প্রশ্নের আপডেটে দেখুন
গিশু

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

1

যদি বর্ধিত সময়ের দ্বারা আপনি কয়েক দিনের বেশি সময় ধরে বোঝায়? তারপর না
কয়েক বছর আগে আমি এটি কিছু নতুন কোডে শুরু করেছিলাম এবং আস্তে আস্তে নিজেকে ধীরে ধীরে পাগল করে তুলেছিলাম।

ক্লাস দেওয়ার জন্য আমার ব্যক্তিগত পছন্দ হ'ল

class MyClass
{
    // static fields
    // fields
    // constructors
    // properties
    // methods
} 

তবে এটি ধর্মীয় নয়, সম্পত্তি এবং পদ্ধতিগুলি একত্রে মিশ্রিত হতে পারে। দৃশ্যমানতা এতে আসে না (আমি জনসাধারণ / সুরক্ষিত / ব্যক্তিগত দ্বারা গোষ্ঠী করি না)

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

যতবার আমি তার ক্লাস খুলি আমি তার ভিতরেই মারা যাই :(


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

আর কনস্ট্রাক্টররা? যারা "পদ্ধতি" এর অধীনে যায়?
কোডি গ্রে

@ কোডি গ্রে: ক্ষমা চেয়েছি, ভুলে গেছি সিটারস!
বাইনারি ওয়ারিয়ার

@ গিশু: আমি দেখতে পেয়েছি যে আধুনিক দৃশ্যায়ন এবং নেভিগেশন সরঞ্জামগুলি কঠোর ফাইল বিন্যাসের প্রয়োজনীয়তা সরিয়ে দিয়েছে। আমি যখন সঠিকভাবে ব্যবহার এবং "সংজ্ঞাতে যেতে" ক্লিক করতে পারি তখন কোনও পদ্ধতি প্রয়োগ করা হয় সেখানে কী আসে যায়?
বাইনারি ওয়ারিয়ার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.