জাভা মন্তব্যে কোডের লজিক্যাল বিভাগগুলি কীভাবে চিহ্নিত করবেন?


93

জাভা ক্লাসগুলি সাধারণত যৌক্তিক "ব্লক" এ বিভক্ত হয়। এই বিভাগগুলি চিহ্নিত করার জন্য কোন সম্মেলন আছে? আদর্শভাবে, এটি প্রধান আইডিই দ্বারা সমর্থিত হবে।

আমি ব্যক্তিগতভাবে এই পদ্ধতিটি ব্যবহার করি:

//// Section name here ////

তবে কিছু সম্পাদককে এ নিয়ে সমস্যা বলে মনে হচ্ছে।

উদাহরণস্বরূপ, উদ্দেশ্য-সি কোডে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন:

#pragma mark -
#pragma mark Section name here

এটি এক্সকোডের এমন মেনুতে প্রদর্শিত হবে যা এরকম দেখাচ্ছে:

বিকল্প পাঠ


4
আইওএস বিকাশকারী হিসাবে, আমি অ্যান্ড্রয়েড স্টুডিও দিয়ে শুরু করার সময় সবচেয়ে বেশি মিস করেছি
ক্রিস চেন

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

ডাউনভোটেড: আমি @ f.carlsen এর সাথে একমত। আপনি যদি মন্তব্য সহ আপনার শ্রেণি গঠন করেন তবে আপনি সম্ভবত একক দায়িত্বের নীতিটি ভঙ্গ করবেন ।
schrieveslaach

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

উত্তর:


68

আমি ব্যক্তিগতভাবে 80-অক্ষরের লাইন বিভাজকগুলি ব্যবহার করি:

public class Client {

    //================================================================================
    // Properties
    //================================================================================

    private String name;
    private boolean checked;

    //================================================================================
    // Constructors
    //================================================================================

    public Client() {
    }

    public Client(String name, boolean checked) {
        this.name = name;
        this.checked = checked;
    }

    //================================================================================
    // Accessors
    //================================================================================

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isChecked() {
        return checked;
    }

    public void setChecked(boolean checked) {
        this.checked = checked;
    }

}

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

ইক্লিপসে, আমি কাস্টম টেম্পলেটগুলির একটি সেট তৈরি করেছি (জাভা -> সম্পাদক -> টেমপ্লেটস অফ ইক্লিপসের পছন্দসমূহ ডায়ালগ) যা সেই বারগুলি উত্পন্ন করে। - সেপা (অ্যাকসেসরগুলির জন্য এসইপ্যারেটর) - সেপ্প (সম্পত্তিগুলির জন্য এসইপিএটার) - সেপিসি (কনস্ট্রাক্টরগুলির জন্য এসইপ্যারেটর) - ইত্যাদি

আমি স্ট্যান্ডার্ড "নতুন শ্রেণি" টেম্পলেটটিও সংশোধন করেছি (জাভা -> কোড শৈলী -> গ্রহন অগ্রাধিকারের স্ক্রিনে কোড টেম্পলেট)

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


147

ইন্টেলিজ / অ্যান্ড্রয়েড স্টুডিওর জন্য একটি আশ্চর্যজনক সমাধান রয়েছে।
দিয়ে শুরু করুন:
//region Description
এবং এর সাথে শেষ করুন:
//endregion

এর জন্য শর্টকাটটি মেনুতে রয়েছে আপনি Command+ Alt+ T(ম্যাক) বা Ctrl+ Alt+ T(উইন্ডোজ) দিয়ে খুলতে পারেন

আপনার প্রয়োজন হলে অতিরিক্ত ভিজ্যুয়াল বিভাজনের জন্য আপনার নিজস্ব লাইনও যুক্ত করতে পারেন। যে কোনও ফাংশনের মতো +/- বোতামগুলির সাহায্যে অঞ্চলটি ইচ্ছামত চুক্তিবদ্ধ এবং প্রসারিত হতে পারে। আপনি Command+ Alt+ Period( Ctrl+ Alt+ Period) সহ অঞ্চলগুলির মধ্যেও চলাচল করতে পারেন

উত্স

উদাহরণ:

//region Parceler Implementation
//---------------------------------------------------------------------------------------
@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeParcelable(this.die, 0);
    dest.writeParcelable(this.dieSprite, 0);
}

private DieVm(Parcel in) {
    this.die = in.readParcelable(Die.class.getClassLoader());
    this.dieSprite = in.readParcelable(Sprite.class.getClassLoader());
}

public static final Parcelable.Creator<DieVm> CREATOR = new Parcelable.Creator<DieVm>() {
    public DieVm createFromParcel(Parcel source) {
        return new DieVm(source);
    }

    public DieVm[] newArray(int size) {
        return new DieVm[size];
    }
};
//---------------------------------------------------------------------------------------
//endregion

এটি অবিশ্বাস্যরূপে দরকারী থ্যাঙ্কস অ্যান্ডি। বিটিডব্লিউ আমি গ্রহগ্রী কীবোর্ড শর্টকাট লেআউটটি ব্যবহার করছি এবং আমার মনে হয় না শর্টকাটগুলি '// অঞ্চল' দুর্দান্ত কাজ করে
থিঙ্কবোনো

4
স্ট্রাকচার ভিউতে এটি দেখানোর জন্য আমি কোনও উপায় দেখতে পাচ্ছি না, তাই আমি এখনও জাল খালি সদস্য ব্যবহার করছি (অব্যবহৃত সতর্কতা দমন করার পাশাপাশি)।
টম

4
অ্যান্ড্রয়েড স্টুডিওতে (স্ট্রাকচার ভিউ) সেই অঞ্চলগুলি দেখানোর কোনও উপায় আছে কি?
মিগুয়েলহিনাপিসি

লিঙ্কটি মারা গেছে; এই ইন্টেলিজ আইডিইএ ব্লগটি একটি সহায়ক উল্লেখ হতে পারে। এটিতে নেটবীনের মতো স্টাইলের ভাঁজ আইটেমগুলির উল্লেখ রয়েছে <editor-fold ...>
ফ্রাঙ্কলিন ইউ

সেরা উত্তর
Michał Ziobro

14

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


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

আমি জানি না কেন আমি অ্যান্ড্রয়েড স্টুডিওতে @ বিভাগটি ব্যবহার করতে পারি না, আপনি কি জানেন যে এটিতে একই আচরণ অর্জন করতে আমি কী করতে পারি?
মিগুয়েলহিনাপিসি

6

আমি এক্সকোড ব্যবহার করার সময়ও তা পছন্দ করেছি। গ্রহনের জন্য আমি জাভা ক্লাসে নেভিগেট করতে ctrl + o (দ্রুত রূপরেখা) ব্যবহার করি।


6

কোডে অযৌক্তিক মন্তব্য / মার্কার ব্যবহার করে কাজ করা সহায়তা করা ভাল অভ্যাস হতে পারে না। এক্সকোড এবং জাভা বিকাশ সম্পর্কে আমার কম ধারণা আছে তবে গ্রহের মতো কোনও বিশেষ চিহ্নিতকারীকে নিয়ে সদস্যদের সন্ধান করা সমস্ত বড় আইডিই সমর্থন সমর্থন করে এমন পদ্ধতিগুলি এবং সদস্যগুলি আউটলাইন ভিউ ব্যবহার করে দেখায় যা ব্যবহার করে ট্রিগার করা যেতে পারে ctrl+O, ইন্টেলিজ (যা আমি ম্যাকের উপরে আরও বেশি ব্যবহার পছন্দ করি এবং একটি ছিল সম্প্রদায় সংস্করণেও) একই আউটলাইন ধারণা রয়েছে এবং (ctrl + f12) ব্যবহার করে দ্রুত অ্যাক্সেস করা যায়। সুতরাং আমার বক্তব্যটি কোডে কোনও অপ্রয়োজনীয় মার্কআপ ব্যবহার করবেন না কারণ সমস্ত (বা কমপক্ষে ভাল / বুদ্ধিমান) আইডিই এটি স্বয়ংক্রিয়ভাবে করতে পারে।


4
সম্মত হন, বিভাগ চিহ্নিতকারীগুলি কেবল ভিজ্যুয়াল গন্ডগোলের সাথে যুক্ত করে। আপনার ক্লাসে এই বিষয়গুলিকে অপ্রাসঙ্গিক করতে দৃly়ভাবে মনোনিবেশ করা উচিত।
পল ম্যাককেঞ্জি

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

4

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

গোষ্ঠী সম্পর্কিত সদস্যদের উত্তরাধিকার বা সমষ্টি মাধ্যমে পৃথক শ্রেণিতে ভাগ করা ভাল। এটি একটি ভাল ওওপি শৈলী হিসাবে বিবেচিত হয়


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

4

আমি জাভাডোক ব্যবহার করব ; অথবা নিম্নলিখিতটিকে একটি সাধারণ "বিভাজক" (একক বা 3 টি লাইন) হিসাবে ব্যবহার করুন:

/** RecyclerOnItemClickListener */

/** 
 * RecyclerOnItemClickListener
 */

যাতে আইডিইতে এটি স্ববিরোধী মন্তব্য করা ধূসর ব্যতীত অন্য রঙে উপস্থিত হয়।


3

আন্ড্রে-এর উত্তর সরবরাহ করা ছাড়াও, // অঞ্চল // অন্তর্ভুক্তি ব্যবহার করার জন্য, আমরা প্রধান কোড বিভাগগুলিতে [বিগএসিআই চিঠি] [1] সন্নিবেশ করি। দ্রুত স্ক্রোল করার সময়, এটি সত্যই বাইরে যায়। এই পদ্ধতির একটি অপূর্ণতা হ'ল আমি এটির জন্য অনুসন্ধান করতে পারি না সুতরাং আপনার নীচের মতো "ব্যানার" এর ঠিক নীচে একটি অনুসন্ধান শব্দ যুক্ত করা দরকার।

ব্লককোট

//    _      _____          _____                  _   _
//   | |    |  __ \   /\   |  __ \      /\        | | | |
//   | |    | |  | | /  \  | |__) |    /  \  _   _| |_| |__
//   | |    | |  | |/ /\ \ |  ___/    / /\ \| | | | __| '_ \
//   | |____| |__| / ____ \| |       / ____ \ |_| | |_| | | |
//   |______|_____/_/    \_\_|      /_/    \_\__,_|\__|_| |_|
//
//   Search here with: LDAP Auth

[1]: http://patorjk.com/software/taag/#p=display&c=c%2B%2B&f=Big&t=LDAP অথথ


2

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

আপনার কোডের যে কোনও স্বয়ংক্রিয় পুনর্গঠন, এরকম মার্কআপটি ভেঙে দেবে।

আপনি যদি গোষ্ঠীকরণ করতে চান তবে একই শ্রেণিতে একসাথে থাকা জিনিসগুলি এবং বিভিন্ন শ্রেণিতে একত্রে সম্পর্কিত নয় এমন জিনিসগুলি বিবেচনা করুন।


0

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


-19

ইন্টেলিজের জন্য আমি পছন্দ করি:

        public void ________________INIT__________________() {};

ফাইল কাঠামো সুন্দর দেখাচ্ছে!


4
এটি খুব খারাপ সমাধান বলে মনে হচ্ছে। আপনার লক্ষ্য কোড সংস্থাগুলি কেন অতিরিক্ত পদ্ধতিগুলি ঘোষণা করবেন?
এনএসজি

4
এটি স্ট্রাকচার ভিউতে পুরো ফাইলটি সেগমেন্টেড করা।
টাইকো পান্ডেলর

4
এটি কেবলমাত্র যা অ্যান্ড্রয়েড স্টুডিওতে সত্যই দেখছে, আপনার নিজের উত্তর হিসাবে প্রস্তাব দিন এবং আমি ব্যবহার করব
user170317

14
সবচেয়ে খারাপ জিনিস আমি এর আগে দেখেছি !! এবং এটি পাবলিক! o_O
কোকরিকো

4
এটি একমাত্র উত্তর যা কাঠামো দৃশ্যে প্রদর্শিত হয় এবং বিভিন্ন আইডিইতে কাজ করে। এটিকে প্রাইভেট এবং গ্রিন করুন এবং এটিকে সহ্য করুন, বা আপনি যদি এটি পছন্দ না করেন তবে এটি ব্যবহার করবেন না, তবে এই উত্তরটি অন্য পাঠকদের কাছ থেকে নিচে ভোট দিয়ে বিস্মৃত হয়ে আড়াল করবেন না।
টম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.