অন্য কেউ নামকরণের ক্লাস এবং পদ্ধতিগুলিকে প্রোগ্রামিংয়ের অন্যতম কঠিন অংশ খুঁজে পান? [বন্ধ]


275

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

খারাপ নাম দিয়ে প্রোগ্রামিং শুরু করা হ'ল সকালে খুব খারাপ চুলের দিন থাকার মতো, দিনের বাকি অংশটি সেখান থেকে উতরাইয়ের দিকে। আমাকে অনুভব করো?


2
আপনি কেন ক্লাস চান, যখন আপনি পরিষ্কারভাবে কেবল একটি ফাংশন প্রয়োজন? ক্লাস নাম সমস্যা হিসাবে ক্রিয়াপদের জন্য আপনি steve-yegge.blogspot.com/2006/03/… পরীক্ষা করে দেখুন ।
ব্যবহারকারীর 151568

বা, যখন আপনি শেষ পর্যন্ত জানবেন এটি কী বলা উচিত তা এগিয়ে যান এবং রিফ্যাক্টর।
এস্তেবান আরায়া

16
আপনি কী নামকরণ করছেন?: পদ্ধতিগুলি : ক্রিয়াপদ যেমন গেট , সেট, সেভ ইত্যাদি শ্রেণি এবং ভেরিয়েবল ব্যবহার করুন: বিশেষ্য ব্যবহার করুন যেমন ডকুমেন্ট, ব্যবহারকারী, প্রসঙ্গ, ইত্যাদি ইন্টারফেস : বিশেষণ ব্যবহার করুন যেমন মুদ্রণযোগ্য, ক্লোনযোগ্য, পুনরাবৃত্তিযোগ্য ইত্যাদি। এই থ্রেডটি পড়ার পরে, ক্লাস এবং ভেরিয়েবলগুলির জন্য স্পলস্কির পরামর্শ (এটি বিশেষ্য ব্যবহার করে) এবং ট্র্যাভিসোর পদ্ধতির জন্য পরামর্শ (এটি ক্রিয়া ব্যবহার করে) পছন্দ করি। এছাড়াও 'এর' দিয়ে শেষ হওয়া বস্তুগুলি তৈরি করবেন না
ড্যানিয়েল গ্যাসুল

5
"কম্পিউটার বিজ্ঞানে দুটি কঠিন সমস্যা রয়েছে: ক্যাশে অবৈধকরণ, নামকরণের সম্মেলন এবং নীরব ওভারফ্লো"।
করাকুরি

6
@ করাকুরি যে সংস্করণটি আমি শুনেছি তা হ'ল কম্পিউটার বিজ্ঞানে 2 টি সমস্যা রয়েছে: নামকরণ, এবং 1 ত্রুটি দ্বারা অফসেট
হাওয়েস্ট

উত্তর:


121

আপনি এখন যা করছেন তা ঠিক আছে, এবং আমি আপনাকে সুপারিশ করছি যে আপনি আপনার বর্তমান বাক্য গঠনটি বজায় রেখেছেন:

প্রসঙ্গ + ক্রিয়া + কিভাবে

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

আমি তারিখের সাথে ফাইলগুলির নামকরণের অনুরূপ, আপনি বলতে চাই ২০০৯-০১-০7.লগটি 1-7-2009.log নয় কারণ আপনার একটি গুচ্ছ থাকার পরে, আদেশটি সম্পূর্ণ অকেজো হয়ে যায়।


28
আমি নামকরণের পদ্ধতিগুলি যখন শ্রেণীর নাম থেকে অনুমান করা পছন্দ করি ... শ্রেণীর কর্মচারী-রেপোসিটরি {শূন্য অ্যাড (কর্মচারী কর্মচারী); অকার্যকর get (int id); অকার্যকর গেটএল (); অকার্যকর গেটএল (অ্যাকশন <ফিল্টারক্রিটরিয়া> ফিল্টার); } আপনি কি মনে করেন?
ব্যাস ভার্গাভা

5
আপনার যদি "ঘর" ক্রিয়াগুলির একটি মানক তালিকা থাকে তবে সহায়তা করে। সুতরাং এটি সর্বদা পাওয়া যায় এবং লোড হয় না / পড়ুন / পুনরুদ্ধার করুন / নির্বাচন করুন / সন্ধান করুন .... ইত্যাদি
ডেড অ্যাকাউন্ট

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

6
আমি আপনার পরামর্শের ইন্টেলিজেন্স প্রভাবটি পছন্দ করি তবে আমি এমন একটি পদ্ধতির পছন্দ করি যা কিছুটা বেশি শিক্ষিত। সুতরাং আমি কর্মচারী.সপ সার্ভিসেটর () এর চেয়ে কর্মচারী.সপ সার্ভিসেটর () এর চেয়ে বেশি পছন্দ করব কারণ এটি পড়ছে (আরও প্রাকৃতিক ইংরাজির মতো
ম্যাথিউ ম্যারাভিলাস

12
তবে @ ট্র্যাভিসো, এটি ইংরেজিতে ভাল লাগছে না। আপনি কর্মচারী পাবেন না, আপনি একটি কর্মী পেতে। আপনার যদি আরও জটিল ক্রিয়া বিশেষণগুলির সাথে জড়িত থাকে যেমন InvalidateObsoleteQueries? QueriesInvalidateObsoleteপড়া কঠিন এবং কোন মানে নেই। এছাড়াও, সি # তে, বিশেষত রেশার্পারের সাথে বর্ণমালার ক্রম অপ্রাসঙ্গিক। আপনাকে টাইপ করা "EMP" শুরু করেন, Resharper দিতে হবে GetEmployee, SetEmployeeএবং এমনকি PopulateInactiveEmployeesList
ইলিয়া কোগান

54

একটি পাঠ আমি শিখেছি, আপনি যদি কোনও শ্রেণীর নাম খুঁজে না পান তবে এই শ্রেণীর সাথে প্রায় সবসময়ই কিছু ভুল থাকে:

  • তোমার দরকার নেই
  • এটি খুব বেশি করে

13
বা এটি খুব অল্প করে তোলে।
ব্যবহারকারীর 151568

4
আপনাকে ধন্যবাদ, এটি আসলে আমার জন্য প্রাসঙ্গিক ছিল।
হাওয়েস্ট

52

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

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

আপনার ক্ষেত্রে দেখে মনে হচ্ছে আপনার ক্লাসটি একটি ডকুমেন্টে একটি url রূপান্তর করে । এটি সেভাবে ভাবতে কিছুটা অদ্ভুত, তবে পুরোপুরি সঠিক এবং আপনি যখন এই প্যাটার্নটি সন্ধান শুরু করেন, আপনি এটি সর্বত্র দেখতে পাবেন।

আমি যখন এই প্যাটার্নটি পাই, আমি সর্বদা এক্স Fromy এর ফাংশনটির নাম রাখি ।

যেহেতু আপনার ফাংশন একটি ডকুমেন্টে একটি url রূপান্তরিত করে , আমি এটির নাম দেব

DocumentFromUrl

এই প্যাটার্নটি উল্লেখযোগ্যভাবে সাধারণ। উদাহরণ স্বরূপ:

atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine

আপনি UrlToDocumentযদি এই অর্ডারে বেশি স্বাচ্ছন্দ্য বোধ করেন তবে আপনিও ব্যবহার করতে পারেন। আপনি x Fromy বা y Tox বলছেন তা সম্ভবত স্বাদের বিষয়, তবে আমি ক্রমটিকে অগ্রাধিকার দেব Fromকারণ ফাংশন নামের শুরুটি ইতিমধ্যে আপনাকে বলে দেয় এটি কী টাইপ দেয়।

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


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

7
XFromY- কনভেশনটি মূলত রিটার্নের ধরণ এবং পরামিতি তালিকার মধ্যে পুনরাবৃত্তি করে: Foo fooFromBar (বার বার)। আপনি যদি এই ধারাবাহিকতা বা পুনর্নির্মাণকে কল করেন তবে এটি আপনার পক্ষে।
লেনা শিমেল

"আপনার ক্ষেত্রে মনে হচ্ছে আপনার ক্লাসটি একটি ডকুমেন্টে একটি url রূপান্তর করে"। যেহেতু ক্লাসগুলি ধারণাগুলি উপস্থাপনের পরিবর্তে জিনিসগুলি "করার" কথা বলছে?
ব্যবহারকারীর 151568

6
@ ব্রায়ান: ঘোষণায় এটি কেবলমাত্র এক জায়গায় অপ্রয়োজনীয়। আপনি এটি অন্য যে কোনও জায়গায় ব্যবহার করেন না কেন, তথ্যের ধরণের কিছুটা স্মরণ করিয়ে দেওয়া খুব ভাল। ঘোষণায় ফিরে না গিয়ে কোডকে আরও পঠনযোগ্য করে তোলে।
জোয়েল স্পলস্কি

3
@ স্টেফান- কিছু ভাষায় যেমন সি # এবং জাভাতে সমস্ত কোড অবশ্যই C ++ এর বিপরীতে একটি শ্রেণিতে আবদ্ধ করতে হবে। আপনি যদি কোডটি আধুনিকীকরণ করতে চান তবে ফাংশনগুলি সেই ভাষাগুলিতে প্রথম শ্রেণির নাগরিক নয়। অতএব, আপনি কখনও কখনও ক্লাস দিয়ে শেষ করেন যা কোনও ফাংশনের মতো জিনিস "করতে" পারে।
রায় 18

31

কখনও কখনও কোনও শ্রেণি বা পদ্ধতির জন্য ভাল নাম হয় না, এটি আমাদের সবার ক্ষেত্রে ঘটে। যদিও প্রায়শই, কোনও নাম নিয়ে আসতে অক্ষমতা আপনার নকশায় কিছু ভুল হওয়ার ইঙ্গিত হতে পারে। আপনার পদ্ধতিতে কি খুব বেশি দায়িত্ব রয়েছে? আপনার শ্রেণি একটি সুসংগত ধারণা আবদ্ধ করে?


3
সত্যিই খুব ভাল পয়েন্ট।
ক্যামিলো মার্টিন

27

থ্রেড 1:

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

থ্রেড 2:

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

এখানে কোথাও কোনও থ্রেড.স্লিপ (...) নেই।


24

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

আপনার ক্লাসের জন্য আমি পরামর্শ দেব VendorHelpDocRequester


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

1
আমি এটি একবার বা
দু'বারও

1
শ্রেণীর নামে ক্রিয়াপদ থাকা আমার কাছে সর্বদা ভুল মনে হয়। এছাড়াও এটি সর্বদা ব্যবহারে কিছু সদৃশ হয় (যেমন VendorHelpDocRequester.request():)। আমি কেবল `ভেন্ডারহেল্পডোকস.রেকোয়েস্ট () '
এডসন মদিনা

19

স্টিভ ম্যাককনেলের লেখা কোড কমপ্লিট বইটি ভেরিয়েবল / ক্লাস / ফাংশন / নামকরণের জন্য একটি সুন্দর অধ্যায় রয়েছে ...


এটি আমার প্রিয় বইগুলির মধ্যে একটি, এটির সুপারিশ করুন
উইলকোডেজাভাফরফুড

2
যে কেউ কোড কোড সম্পূর্ণরূপে উল্লেখ করেছে তার জন্য +1!
রিচার্ড ইভ

15

আমি মনে করি এটি একটি পার্শ্ব প্রতিক্রিয়া।

এটি প্রকৃত নামকরণ যে কঠিন। নামকরণের প্রক্রিয়াটি আপনাকে কী ভয়ঙ্কর বাস্তবতার মুখোমুখি করে তোলে তা আপনি কী জানেন যে আপনি কী করছেন তা নয় hard


12

আমি আসলে গতকালই এই উদ্ধৃতিটি সিগন্যাল বনাম শোরগোলের মাধ্যমে শুনেছি ব্লগের মাধ্যমে 37 শুনেছি এবং আমি অবশ্যই এটির সাথে একমত হই:

"কম্পিউটার বিজ্ঞানে কেবল দুটি শক্ত জিনিস রয়েছে: ক্যাশে অবৈধকরণ এবং নামকরণের জিনিস" " - ফিল কার্লটন


সিমোনউইলিসন.ন.স.২০০/ / জুলাই / ৫ / আমাকে আমাকে tbray.org/ongoing/When/200x/2005/12/23/UPI এর দিকে পরিচালিত করেছিল যা আমাকে কার্লটন.হামিলটন ডট কম এবং কার্লটন.হমিল্টন.কমের দিকে নিয়ে গেছে /showallquotes.cgi , যা উদ্ধৃতি অন্তর্ভুক্ত করে না! (তবে আমি স্ক্রাম থেকে # 5 টি স্বীকৃত))
ড্যারিল স্পিজিটর

1
"কম্পিউটার বিজ্ঞানের দুটি কঠিন বিষয়: ক্যাশে অবৈধকরণ, নামকরণের জিনিসগুলি এবং একের পর এক ত্রুটি" "
ড্যান লাগেজ

7

এটা ভাল যে এটি কঠিন। এটি আপনাকে সমস্যা সম্পর্কে এবং ক্লাসটি আসলে কী করার কথা বলেছে তা ভাবতে বাধ্য করছে। ভাল নামগুলি ভাল ডিজাইনের দিকে পরিচালিত করতে পারে।


6

একমত। আমি আমার টাইপের নাম এবং ভেরিয়েবলগুলিকে খুব ভয়াবহভাবে দীর্ঘ না করে যতটা সম্ভব বর্ণনামূলক রাখতে চাই, তবে কখনও কখনও কেবল একটি নির্দিষ্ট ধারণা পাওয়া যায় যা আপনি ভাল শব্দ খুঁজে পাচ্ছেন না।

সেক্ষেত্রে, এটি সর্বদা আমাকে সহকর্মীকে ইনপুট জিজ্ঞাসা করতে সহায়তা করে - এমনকি যদি তারা চূড়ান্তভাবে সহায়তা না করে তবে এটি সাধারণত আমাকে কমপক্ষে এটি উচ্চস্বরে ব্যাখ্যা করতে এবং আমার চাকা ঘুরিয়ে আনতে সহায়তা করে।


6

আমি শুধু নামকরণ নিয়মাবলী উপর লিখছিলাম গত মাসে: http://caseysoftware.com/blog/useful-naming-conventions

এর সংক্ষেপ:

verbAdjectiveNounStructure - অংশ হিসাবে কাঠামো এবং বিশেষণ সহ

জন্য ক্রিয়া , আমি কর্ম ক্রিয়া বিদ্ধ: সংরক্ষণ মুছুন, অবহিত, আপডেট, বা উৎপন্ন। একবারে আমি "প্রক্রিয়া" ব্যবহার করি তবে কেবল সারি বা কাজের ব্যাকলগগুলি নির্দিষ্টভাবে উল্লেখ করতে পারি।

জন্য বিশেষ্য , আমি বর্গ ব্যবহার করুন অথবা সাথে ইন্টারঅ্যাক্ট হচ্ছে অবজেক্ট। ওয়েব 2 প্রোজেক্টে এটি প্রায়শই টাস্ক বা প্রকল্প হয়। যদি এটি জাভাস্ক্রিপ্ট পৃষ্ঠাটির সাথে ইন্টারঅ্যাক্ট করে তবে এটি বডি বা টেবিল হতে পারে। মুল বক্তব্যটি হ'ল কোডটি স্পষ্টভাবে এটির সাথে ইন্টারেক্ট করছে describes

গঠন করা হয়েছে কারণ এটি অবস্থা থেকে অনন্য ঐচ্ছিক। একটি তালিকা পর্দা একটি তালিকা বা একটি অ্যারের অনুরোধ করতে পারে। ওয়েব 2 প্রোজেক্টের জন্য প্রকল্প তালিকায় ব্যবহৃত অন্যতম মূল ফাংশন হ'ল getProjectList। এটি অন্তর্নিহিত তথ্যটি পরিবর্তন করে না, কেবলমাত্র উপাত্তের উপস্থাপনা।

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


4

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

আপনার অ্যাপ্লিকেশনটির লেআউটটি এখনই বিবেচনা করুন:

  • অ্যাপ
    • ভেন্ডরডোকরেক্সটার (ওয়েব পরিষেবা থেকে পড়ুন এবং ডেটা সরবরাহ করুন)
    • বিক্রেতার ডকভিউয়ার (বিক্রেতাদের ডক সরবরাহের জন্য রিকোয়েস্টর ব্যবহার করুন)

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

  • অ্যাপ
    • VendorDocs
      • মডেল
        • দস্তাবেজ (সরল অবজেক্ট যা ডেটা ধারণ করে)
        • ওয়েব সার্ভিসকনসুমার (ওয়েব সার্ভিসে কৌতুকপূর্ণ কৌতুক মোকাবেলা)
      • নিয়ামক
        • ডাটাবেসএডাপ্টার (ওআরএম বা অন্যান্য পদ্ধতি ব্যবহার করে দৃ handle়তা হ্যান্ডেল করুন)
        • ওয়েব সার্ভিসএডাপ্টার (একটি নথি দখল করতে এবং এটি ডাটাবেসে আটকে রাখতে গ্রাহককে কাজে লাগান)
      • দৃশ্য
        • হেল্পভিউয়ার (ডকুমেন্টেশন ছিটিয়ে দেওয়ার জন্য ডিবিএডাপ্টার ব্যবহার করুন)

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

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


4

লিও ব্রোডি তাঁর "থিংকিং ফোর্থ" বইয়ে লিখেছেন যে একজন প্রোগ্রামারের পক্ষে সবচেয়ে কঠিন কাজটি জিনিসগুলির নামকরণ করা ছিল, এবং তিনি বলেছিলেন যে সর্বাধিক গুরুত্বপূর্ণ প্রোগ্রামিংয়ের সরঞ্জামটি থিসৌরাস।

থিসরাসটি http://thesaurus.references.com/ এ ব্যবহার করার চেষ্টা করুন ।

এর বাইরে, হাঙ্গেরিয়ান নোটেশনটি কখনও ব্যবহার করবেন না, সংক্ষিপ্ত বিবরণগুলি এড়িয়ে চলুন এবং সামঞ্জস্য বজায় থাকুন।

শুভ কামনা.


1
নোটটি সহ +1 করুন যে সিস্টেম হাদিসিটি কীভাবে আবদ্ধ তা ব্যবহার করা উচিত নয়; অ্যাপ্লিকেশন হানিআই বিভিন্ন সময়ে সহায়ক হতে পারে বিশেষত একটি ভাল টাইপিং সিস্টেম ছাড়াই প্রোগ্রামিং ভাষায়।
ব্যবহারকারীর 151568

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

@ রবউইলিয়ামস আমি মনে করি তারা জোয়েল
স্পলস্কির

1
@ রবউইলিয়ামস এছাড়াও, আপনি কি "এক্স বনাম ওয়াইয়ের কথা শুনি নি তবে কখনও ভাল ধারণাও নয় ..." সম্পর্কে নিশ্চিত? :)
আলয়েস মাহদল

4

সংক্ষেপে:
আমি সম্মত হই যে ভাল নামগুলি গুরুত্বপূর্ণ, তবে আমি মনে করি না যে কোনও মূল্যে প্রয়োগের আগে আপনাকে সেগুলি খুঁজে পেতে হবে।

অবশ্যই শুরু থেকেই ভাল নাম রাখা ভাল better তবে আপনি যদি 2 মিনিটের মধ্যে একজন নিয়ে আসতে না পারেন তবে পরে নামকরণ করতে কম সময় ব্যয় করা হবে এবং উত্পাদনশীলতার দৃষ্টিকোণ থেকে সঠিক পছন্দ।

দীর্ঘ:
সাধারণত সাধারণত নাম প্রয়োগ করার আগে খুব বেশি দীর্ঘ চিন্তা করা উচিত নয়। আপনি যদি আপনার ক্লাসটি প্রয়োগ করেন, এটি "ফু" বা "Dsnfdkgx" নামকরণ করে, বাস্তবায়ন করার সময় আপনি দেখতে পাচ্ছেন আপনার নামকরণ করা উচিত।

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

মূলত, আপনি রিফ্যাক্টরিং সম্পর্কে কীভাবে ভাবেন এটি একটি প্রশ্ন। ব্যক্তিগতভাবে, আমি এটি পছন্দ করি, যদিও এটি আমার দলের সাথীদের মাঝে মাঝে বিরক্ত করে, কারণ তারা বিশ্বাস করে যে কোনও চলমান সিস্টেমকে কখনও স্পর্শ করতে পারে না । এবং আপনি রিফ্যাক্টর করতে পারেন এমন সমস্ত কিছু থেকে, নাম পরিবর্তন করা আপনার পক্ষে করা সবচেয়ে ক্ষতিকারক একটি is


3

কেন হেল্পডোকামেন্টস সার্ভিস ক্লায়েন্ট ধরণের মুখের, বা হেল্পডোকামেন্টস ক্লায়েন্ট ... তা কোনও ব্যাপার নয় এটি হ'ল কোনও বিক্রয়কারীর মূল বিষয় এটি হ'ল দস্তাবেজগুলির সাথে সম্পর্কিত ওয়েবসার্চির ক্লায়েন্ট client

এবং হ্যাঁ নামকরণ কঠিন is


3

এই শ্রেণীর জন্য কেবল একটি বুদ্ধিমান নাম রয়েছে:

HelpRequest

বাস্তবায়নের বিশদটি আপনাকে অর্থ থেকে বিচলিত হতে দেবেন না।


দেড় বছর পরে, আমি HelpLibraryক্লাসের জন্য পরামর্শ দিতে চলেছিলাম, তবে এটি কমপক্ষে হিসাবে ভাল। এটি প্রথমে উত্তরের মাধ্যমে পড়তে অর্থ দেয়!
জেফ স্টার্নাল

2

একটি ভাল সংশোধনকারী সরঞ্জাম বিনিয়োগ করুন!


হাঃ হাঃ হাঃ. কখনও কখনও রিফ্যাক্টরিং সেরা বিকল্প নয় (বড় সি ++ প্রকল্প), তবে আমি অবশ্যই এর আগে এটির আশ্রয় নিয়েছি। কখনও কখনও আমাকে কেবল কাজগুলি করতে হয় এবং নামগুলি পরে আমার কাছে আসে come
স্টিভ এস

2

আমি বেসিকগুলিতে আটকে থাকি: ভার্বনউন (যুক্তি)। উদাহরণ: গেটডক (ডকআইডি)।

অভিনব হওয়ার দরকার নেই। এটি আপনি বা অন্য কেউ না কেন, এখন থেকে এক বছর বোঝা সহজ হবে।


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

দুর্দান্ত পরামর্শ, ট্র্যাভিসো।
জন স্মোক

আমি সাধারণত ক্লাসের জন্য একটি ক্রিয়া ব্যবহার করতে চাই না।
উইলকোডেজাভফুফুড

2

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

সমস্ত প্রধান ভাষার জন্য ইন্টিলিসেন্স বিদ্যমান। সুতরাং তৃতীয় পক্ষের এপিআই ব্যবহার করার সময় আমি 'প্রকৃত' ডকুমেন্টেশন ব্যবহারের বিপরীতে ডকুমেন্টেশনের জন্য এর ইন্টিলেসেন্সটি ব্যবহার করতে চাই।

এই বিষয়টি মনে রেখে আমি একটি পদ্ধতির নাম তৈরি করতে ভাল

StevesPostOnMethodNamesBeingLongOrShort

দীর্ঘ - তবে তাই কি। আজকাল কে 24 ইনচ স্ক্রিন ব্যবহার করে না!


1

নামকরণ একটি শিল্প যে আমাকে সম্মত হতে হবে। আপনার শ্রেণি যদি একটি নির্দিষ্ট "ডিজাইনের ধরণ" (কারখানা ইত্যাদি) অনুসরণ করে তবে এটি কিছুটা সহজ হয়ে যায়।


1

কোডিং স্ট্যান্ডার্ড থাকার এটি অন্যতম কারণ। একটি স্ট্যান্ডার্ড থাকা প্রয়োজনে নাম নিয়ে আসতে সহায়তা করে। এটি অন্যান্য আরও আকর্ষণীয় জিনিসের জন্য আপনার মনকে মুক্ত করতে সহায়তা করে! (-:

আমি স্টিভ ম্যাককনেলের কোড কমপ্লিট ( অ্যামাজন লিঙ্ক ) এর প্রাসঙ্গিক অধ্যায়টি পড়ার পরামর্শ দেব যা পাঠযোগ্যতা এবং এমনকি রক্ষণাবেক্ষণকে সহায়তা করার জন্য বিভিন্ন নিয়মে চলে।

আছে HTH

চিয়ার্স,

হরণ করা


1

না, ডিবাগিং আমার পক্ষে সবচেয়ে কঠিন জিনিস! :-)


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

1

DocumentFetcher? প্রসঙ্গ ছাড়া বলা শক্ত।

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


1

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

যদি এটি কেবল নামের একটি সেটগুলির মধ্যে বেছে নেওয়া হয়, তবে এটি সিস্টেমটি তৈরি করতে আপনি যে কনভেনশন ব্যবহার করছেন তা দ্বারা চালিত হওয়া উচিত। যদি আপনি পূর্ববর্তী সম্মেলনগুলি দ্বারা উদ্ভাসিত কোনও নতুন জায়গায় এসে পৌঁছে থাকেন, তবে এই নতুন কেসটি coverাকতে তাদের যথাযথভাবে (যথাযথভাবে, ধারাবাহিকভাবে) প্রসারিত করার চেষ্টা করার জন্য কিছুটা ব্যয় করা সর্বদা মূল্যবান।

যদি সন্দেহ হয় তবে এটিতে ঘুমোুন এবং পরের দিন সকালে প্রথম স্পষ্ট নামটি বেছে নিন :-)

আপনি যদি একদিন জেগে উঠে বুঝতে পারেন যে আপনি ভুল ছিলেন, তবে এখনই এটিকে পরিবর্তন করুন।

পল।

বিটিডাব্লু: ডকুমেন্ট.ফ্যাচ () বেশ সুস্পষ্ট।


1

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


1

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


1

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


1

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

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


0

যদি নামটি কোনও লেআউট প্রোগ্রামারের কাছে নিজেকে ব্যাখ্যা করে তবে সম্ভবত এটি পরিবর্তন করার দরকার নেই।

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