সবচেয়ে খারাপ কোডিং মান আপনি কখনও অনুসরণ করতে হবে? [বন্ধ]


77

আপনার কি কোডিং মানগুলির সাথে কাজ করতে হয়েছে যে:

  • আপনার উত্পাদনশীলতা দুর্দান্তভাবে হ্রাস পেয়েছে?
  • মূলত ভাল কারণে অন্তর্ভুক্ত ছিল কিন্তু মূল উদ্বেগ অপ্রাসঙ্গিক হয়ে যাওয়ার পরে অনেক পরে রাখা হয়েছিল?
  • এতদিন কোন তালিকায় ছিলেন যে এগুলি সব মনে রাখা অসম্ভব?
  • আপনি কি মনে করেছেন লেখক ভাল কোডিং অনুশীলনকে উত্সাহিত করার চেয়ে তাদের চিহ্ন ছেড়ে দেওয়ার চেষ্টা করছেন?
  • এগুলি কেন অন্তর্ভুক্ত করা হয়েছিল তা আপনার কোনও ধারণা ছিল না?

যদি তা হয় তবে আপনার সর্বনিম্ন প্রিয় নিয়ম কী এবং কেন?


এখানে কিছু উদাহরণ


4
আমি এসও তে আগে একই ধরণের প্রশ্ন (তবে ঠিক একই রকম নয়) জিজ্ঞাসা করেছি: স্ট্যাকওভারফ্লো
ব্রায়ান আর বন্ডি

@ ব্রায়ান, ধন্যবাদ, আমি আপনার প্রশ্নটি দেখেছি কিন্তু এটি সম্পর্কে ভুলে গেছি।
ফিনউইং

4
কোডিং মানগুলির সাথে আসল সমস্যা হ'ল সময় এবং প্রচেষ্টা নষ্ট হয় যে সেগুলি সঠিক কিনা।
আন্তঃসত্ত্বা কলহের সৃষ্টি করার

উত্তর:


97

এটি কয়েকটি পালক নিয়ে উঠতে পারে তবে মানকগুলি প্রতিটি পদ্ধতির শীর্ষে টেম্পলেটড ব্লক মন্তব্যগুলিকে সর্বদা আমার থেকে ছড়িয়ে ছিটিয়ে দেয়।

1) তারা সর্বদা পুরানো থাকায় যেহেতু তারা কোড থেকে খুব বেশি দূরে থাকে যা আপনি জিনিসগুলি আপডেট করার সময় প্রকৃত কাজটি লক্ষ্য করে। খারাপ মন্তব্য কোন মন্তব্য চেয়ে খারাপ।

2) তারা প্রায়শই কেবল তথ্যের পুনরাবৃত্তি করে যা ইতিমধ্যে সোর্স নিয়ন্ত্রণ সরঞ্জামটি অন্তর্ভুক্ত রয়েছে, কেবলমাত্র কম নির্ভুল। উদাহরণস্বরূপ: সর্বশেষ সংশোধিত তারিখ / কারণগুলির তালিকা by


12
আমি খুঁজে পেয়েছি (কমপক্ষে এখন, প্রথম স্কুলে যা দেখতে অদ্ভুত মনে হয়েছিল) যে সম্পূর্ণভাবে মন্তব্য করা একটি খারাপ অভ্যাস
শ্যাডি এম। নাজিব

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

13
অসম্মত! আমরা অকেজো আকরিক রিডান্ট্যান্ড তথ্য যুক্ত করি না, তবে ফাংশনটি (.h ফাইলটিতে) কী করে তার প্রকৃত পাঠ্য ব্যাখ্যা এবং এটি এতটাই দরকারী! অবশ্যই আমরা কোডের সাথে এটি সিঙ্ক করে বজায় রাখতে প্রতিশ্রুতিবদ্ধ।
উইজার্ড

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

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

130

এমন একজন অধ্যাপক ছিলেন যাঁরা একবার দাবি করেছিলেন যে আমাদের কোডের প্রতিটি লাইনের জন্য কমপক্ষে একটি মন্তব্য আছে have

//Set x to 3
var x = 3;

//if x is greater than 2
if(x>2){

    //Print x
    Print(x);
}

এটা বেশ হাস্যকর ছিল।


10
এটি কি ঠিক তাই নয় যে প্রফেসর জানেন যে আপনি ঠিক জানেন কী চলছে?
জন ম্যাকআইন্টির

80
আমি মনে করি এটি কী চলছে তা স্পষ্ট, এবং এটি শিক্ষা নয়।
ড্যান রে

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

4
হ্যাঁ, আপনি সর্বদা এমন মন্তব্য লিখতে পারেন যা কেবল কোডটির পুনরাবৃত্তি করে এবং কোনও বোঝাপড়া দেখায় না। তিনি কি বন্ধনী বন্ধের আগে আপনাকে "" সমাপ্তি বন্ধনী "ঠিক করেন?
বিকল্প

6
আপনি যদি ভুলভাবে আপনার কোডটিতে একটি দরকারী মন্তব্য পেয়ে থাকেন তবে কী হবে? // commentতার আগে আপনার কি লাইনে লাগানো দরকার ?
কনফিগারকারী

103

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

অঞ্চলগুলি ভিজ্যুয়াল স্টুডিওতে যুক্ত করা সবচেয়ে খারাপ বৈশিষ্ট্যগুলির মধ্যে একটি; এটি প্রকৃত ওও কাঠামোর পরিবর্তে পৃষ্ঠের কাঠামোকে উত্সাহ দেয়।

আজকাল, আমি দর্শনীয় স্থানে # আরজিওনকে হত্যা করি।


11
আমি এই ডজন কয়েকবার ভোট দেওয়ার চেষ্টা করেছি ...
TGnat

22
আপনি যদি মনে করেন আপনার # আরজিওনের দরকার পড়ে তবে আমার মনে হয় আপনার রিফ্যাক্টর লাগবে।
জে বাজুজি

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

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

6
# অঞ্চলগুলির একমাত্র ভাল উদ্দেশ্য হ'ল কোড লুকানো যা সম্পাদনা করার দরকার নেই । এটি একটি কঠিন-থেকে-ডান অ্যালগরিদম সহ কোড, বা কোড উত্পন্ন হতে পারে যা আপনি বরং লোকেরা স্পর্শ করতে চান না, বা কুৎসিত ডিবাগিং-কোড ব্লক। তবে লোকেরা কাজ করবে এমন কোড নয়। #Region দোকানে আটকে থাকা তাদের জন্য, আমার কাছে একটি ম্যাক্রো রয়েছে যা সংজ্ঞাগুলিতে পড়ে তবে অঞ্চলগুলি প্রসারিত করে। : এখানে দেখুন stackoverflow.com/questions/523220/awesome-visual-studio-macros/...
Kyralessa

80

একটি চাকরিতে আমরা ডাটাবেসে হাঙ্গেরিয়ান স্বরলিপি কিছু অদ্ভুত রূপ ব্যবহার করতে বাধ্য হয়েছিল ।

আমি বিশদটি মনে করতে পারি না, তবে স্মৃতি থেকে প্রতিটি ক্ষেত্রের নামটি ধারণ করে:

  • স্বর নেই
  • সমস্ত বড় হাতের অক্ষর
  • টেবিলের একটি রেফারেন্স
  • একটি ডেটা টাইপ সূচক
  • একটি ডেটা দৈর্ঘ্য
  • একটি অযোগ্য সূচক

উদাহরণস্বরূপ, কোনও ব্যক্তির প্রথম নাম ধারণ করে রাখা কলামটি বলা যেতে পারে: PRSNFRSTNMVC30X(ব্যক্তি সারণী, প্রথম নাম কলাম, বর্ণচর 30 অক্ষর, নাল নয়)


14
দুঃখিত, তবে আপনি যখন ডাটাবেসটি রিফ্যাক্ট করেন বা যখন সিদ্ধান্ত নেন যে ভর্চারের দৈর্ঘ্য আলাদা হওয়া দরকার what হঠাৎ করে, আপনি আপনার সমস্ত কোডের মধ্যে দিয়ে যেতে পারেন এবং ...শ্বর god ভয়াবহ দেখাচ্ছে।
টম মরিস

71
স্বর নেই ??! তুমি রসিকতা করতেছো তাই না?
ড্যানিয়েল ক্যাসিডি

39
এই মানদণ্ড প্রয়োগকারী ব্যক্তিরা কি তাদের কপালে ঝাঁকুনি দিয়েছিলেন এবং প্রায়শই সম্মান ও যুদ্ধ নিয়ে আলোচনা করেন?
রায়ান রবার্টস

10
হা হা, ভাল তারা ডিবিএ ছিল, তাই ...;)
দামোভিসা

14
ইউআরএল শর্টনারের মাধ্যমে আপনার কলামের নামগুলি পাঠানো উচিত ছিল। পার্সন ফার্স্টনামভর্চার 30নোট নল = বিট.লি
বিলি

48

সমস্ত ধনুর্বন্ধনী বন্ধনী কি শেষ হয় তা মন্তব্য করে অনুসরণ করা:

উদাহরণ:

for (int i = 0; i < 10; i++)
{
    if (foo > bar)
    {
        printf("Foo greater than bar");
    } // End If (foo > bar)

    while (baz)
    {
       farb();
    } // End while (baz)
} // End For

21
আরও বুদ্ধিমান: ব্লকের শুরুটি কী ছিল তা বলতে যদি আপনার কোনও মন্তব্যের প্রয়োজন হয় তবে ব্লকটি অনেক দীর্ঘ, বা এর সামগ্রীটি খুব জটিল => রিফ্যাক্টর।
রিচার্ড

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

7
কোনও শক্তিশালী আইডিই নেই এমন বিশ্বের জন্য এটি দুর্দান্ত ধারণা।
আইএডাপ্টার

9
@ জয় যে কোনও শালীন আইডিইতে আপনি একটি ধনুর্বন্ধকে হাইলাইট করতে পারেন এবং এটি অন্যান্য সম্পর্কিত ব্রেসকে হাইলাইট করবে। লোকেরা যখন এটি করে আমি ব্যক্তিগতভাবে ঘৃণা করি।
ইভান প্লেইস

3
যদিও আপনার উদাহরণটি ক্রেজি পক্ষের দিকে কিছুটা হলেও (কারণ এগুলি যথেষ্ট পরিমাণে দীর্ঘায়িত হয় না এবং যুক্তি পরিবর্তনের সময় আপনাকে ধীর করে দেবে), এটি সর্বদা খারাপ জিনিস নয়। এর মতো মন্তব্যগুলি সম্পূর্ণ ফাইলের বিস্তৃত নেমস্পেস / এন্ডিফ ঘোষণাগুলি বন্ধ করার জন্য সত্যই কার্যকর।
jsternberg

38
#define AND  &&
#define OR   ||
#define EQ   ==

'নফ বলল।


9
# অন্তর্ভুক্ত <iso646.h> আরও ভাল পছন্দ না?
AndrejaKo

3
@ আন্ড্রেজাকো: এই পূর্বাভাস <আইসো 646.h> এটি সি ফরটারনের মতো দেখানোর চেষ্টা ছিল।
নিলাল সি।

2
এটি কি সত্যই কোনও কোডিং মান ছিল? অর্থাত্ সরাসরি অপারেটরদের লেখার বিরুদ্ধে কোন কোম্পানির নীতি ছিল?
Finnw

21
এটাও ছিল #define BEGIN {এবং #DEFINE END }?
জেবিআরউইলকিনসন

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

37
  • স্থানীয় ভেরিয়েবলের নামগুলি আন্ডারস্কোরবিহীন সমস্ত ছোট হাতের অক্ষর

রিয়াল উদাহরণ: paymentmethodtotalshtml, contracttypechangecontexts, customsegmentspectexts,potentialmsceventref

নিউ ইয়র্ক টাইমস এর ওজন :

“শব্দের স্থানগুলিকে প্রশ্রয় দেওয়া উচিত নয়। প্রাচীন গ্রীক, স্বরগুলির বৈশিষ্ট্যযুক্ত প্রথম বর্ণমালা, যদি আপনি শব্দটি বের করেন এবং শব্দগুলি না করে থাকেন তবে শব্দের ফাঁকা জায়গা ছাড়াই তা ব্যাখ্যা করা যেতে পারে। […] লাতিনও দ্বিতীয় শতাব্দীর মধ্যে পৃথক শব্দ বন্ধ করে দিয়েছিল। ক্ষতিটি বিস্ময়কর, কারণ অনিচ্ছিন্ন লেখাটি পড়ার জন্য চোখকে আরও বেশি পরিশ্রম করতে হয়। কিন্তু যেমন প্যালেওগ্রাফার পল স্যাঞ্জার ব্যাখ্যা করেছেন, প্রাচীন পৃথিবী 'পড়া সহজ ও দ্রুততর করার' ইচ্ছা করত না। ”

3
+1 টি। ছোটখাটো বিরক্তি বেড়ে যায়। এছাড়াও তাদের বিরুদ্ধে তর্ক করা শক্ত কারণ কোডিং স্ট্যান্ডার্ড সম্পাদক বা প্রধানমন্ত্রী বলতে পারেন "এটি কোনও বড় বোঝা নয় তাই এটি পরিবর্তন করার মতো নয়"।
ফিনউইউ

1
যথাযথভাবে। (যদিও এই ক্ষেত্রে, অজস্র পড়া variablenameslike thiscanreally adduptoquitea greatburden।)
জন Siracusa স্বাগতম

57
নাম দুটি আবিষ্কার করার চেয়ে নাম আবিষ্কার করে নিজেকে আনন্দিত করুন। পৃষ্ঠাগুলি, লিঙ্গ ইত্যাদি
জে বাজুজি

4
@ জয় * সেক্সচেঞ্জ
কনফিগারকারী

2
@ কনফিগ্রেটর: যখন ভিজ্যুয়াল স্টুডিও ডিবাগার টিম আপনাকে ওয়াচ উইন্ডোতে বর্তমানে-ফ্লাইটের ব্যতিক্রম দেখতে দেওয়ার জন্য কোনও বৈশিষ্ট্যে কাজ করছে, তারা "$ প্রাক্তন" নামে একটি সিউডো-ভেরিয়েবল যুক্ত করতে যাচ্ছিল। আমরা দীর্ঘদিন লক্ষ্য করিনি। তারপরে আমরা "$ ব্যতিক্রম" নামকরণ করেছিলাম, তবে আমি এখনও এটি 'গুলি' হিসাবে পড়েছি।
জে বাজুজি

36

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

মার্জ সফ্টওয়্যার ব্যবহার করতেও আমাদের নিষেধ ছিল; প্রতিটি ফাইল একবারে কেবল একজন প্রোগ্রামার দ্বারা পরিবর্তন করা যেতে পারে। রিভিশন কন্ট্রোল সফ্টওয়্যার অবশ্যই বিজ্ঞান কল্পকাহিনী ছিল।

আমার জীবনের সবচেয়ে আনন্দের দিনটি যখন তাকে বরখাস্ত করা হয়েছিল (বিবেচনা করুন যে এটি ইতালিতে কাউকে বহিষ্কার করা খুব কঠিন)।


তিনি 'রিফ্যাক্টরিং' শব্দটি কখনও শুনেন নি
নন্দ

3
তিনি কখনও অন্যান্য প্রচুর শব্দও শুনেন নি ...
উইজার্ড Sep৯

আচ্ছা আপনি আনুষ্ঠানিক পরীক্ষামূলক প্রয়োজন হবে না, কারণ আপনি কখনই পদ্ধতি পরিবর্তন ...
Configurator

36

ডাটাবেসের সাথে সমস্ত মিথস্ক্রিয়া স্টোরেজ পদ্ধতির মাধ্যমে করতে হবে । এটি যদি ১৯৯ and সালে না হয়ে ২০১০ সালে বাস করি তবে তা বোধগম্য হতে পারে।

আমি কেবল বুঝতে পেরেছি যে এটি আসলে মূল প্রশ্নের সমস্ত মানদণ্ডকে অন্তর্ভুক্ত করে:

  • আপনার উত্পাদনশীলতা দুর্দান্তভাবে হ্রাস পেয়েছে? পরীক্ষা করে দেখুন। দয়া করে - কেবল একটি ORM ব্যবহার করুন ।
  • মূলত ভাল কারণে অন্তর্ভুক্ত ছিল কিন্তু মূল উদ্বেগ অপ্রাসঙ্গিক হয়ে যাওয়ার পরে অনেক পরে রাখা হয়েছিল? পরীক্ষা করে দেখুন। ম্যানেজার 1000 বছর পূর্বে একটি ডাটাবেস সার্ভারের বিকাশকারী ছিলেন এবং এই কোডিং স্ট্যান্ডার্ডটিকে এতে রেখেছিলেন।
  • এতদিন কোন তালিকায় ছিলেন যে এগুলি সব মনে রাখা অসম্ভব? পরীক্ষা করে দেখুন। এতে অন্তর্ভুক্ত রয়েছে 'যতটা যুক্তি সম্ভব ডাটাবেসে সংরক্ষণ করা উচিত'।
  • আপনি কি মনে করেছেন লেখক ভাল কোডিং অনুশীলনকে উত্সাহিত করার চেয়ে তাদের চিহ্ন ছেড়ে দেওয়ার চেষ্টা করছেন? পরীক্ষা করে দেখুন। একজন প্রাক্তন ডাটাবেস সার্ভার বিকাশকারী হিসাবে পরিচালকের কাছে ফিরে আসতে থাকে।
  • এগুলি কেন অন্তর্ভুক্ত করা হয়েছিল তা আপনার কোনও ধারণা ছিল না? পরীক্ষা করে দেখুন।

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

3
অপেক্ষা করুন .. সমস্ত গম্ভীরতায় আমি ভাবলাম এসপি এর চেয়ে ভাল, পারফরম্যান্স-ভিত্তিক, সরাসরি এসকিউএল কল করার চেয়ে বলুন, সি #?
Sk93

3
আপনার মতো মনে হচ্ছে তারা ঠিক কেন অন্তর্ভুক্ত হয়েছিল। : পি
ম্যাসন হুইলার

4
যখন আমি বড় হয়েছি তখন অবশেষে আমি বুঝতে পেরেছিলাম কেন সমস্ত কিছু ডিবিয়ের মধ্য দিয়ে যাওয়া উচিত :) সমস্ত গম্ভীরতার সাথে, এটি এতগুলি বিষয় সরল করে তোলে, চাকাটি পুনরায় উদ্ভাবন করবেন না।
Jé ক্যু

3
আমি সুন্দর যুক্তি শুনেছি "আমরা একটি ওআর / এম ব্যবহার করতে পারি না কারণ সমস্ত মিথস্ক্রিয়া অবশ্যই এসপি ব্যবহার করবে"। মানব-শক্তির এমন অপচয়।
কনফিগারকারী

33

এসটিএল বা অন্যান্য স্ট্যান্ডার্ড সি ++ গ্রন্থাগার ব্যবহারের অনুমতি দেওয়া হচ্ছে না কারণ সিটিও বিশ্বাস করেছিল যে 'আমরা' এটি আরও ভাল এবং দ্রুত করতে পারব। এমনকি তালিকাগুলি এবং স্ট্রিং ক্লাসের মতো মৌলিক নির্মাণগুলি।


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

1
@ ম্যাট: এটি যুক্ত করতে, ইএ অভিযোগ মেমরির ব্যবহার এবং সূচনা কেন্দ্রিক ছিল। তাদের নিজস্ব প্রয়োগ কম মেমরি গ্রাস করেছে, তা তাড়াতাড়ি মুক্তি পেয়েছে এবং পরবর্তীতে আরম্ভ করা বস্তুগুলিকে আরম্ভ করা এড়ানো হবে।
ম্যাথিউ এম।

আমি নিজেই কোডিং করতে তাকে বলব।
রাইটফোল্ড

31

হাঙ্গেরিয়ান স্বরলিপি

এমএসডিএন-তে " চার্লস সিমোনির হাঙ্গেরিয়ান স্বীকৃতি সনাক্তকারী নামকরণ কনভেনশনের ব্যাখ্যা " থেকে নমুনা বের করা হয়েছে ।

1 # "sy.h" অন্তর্ভুক্ত
2 বাহ্যিক ইন্ট * আরজিডব্লিউডিক;
3 এক্সটার্নার ইন বিসিএম্যাক;
4 টি স্ট্রাইক এসওয়াই * সাইক্স (চর এসজেড [])
6
7 চর * pch;
8 ইন সি সি;
9 স্ট্রাইক এসওয়াই * পিএসআই, * সাইক্রেট ();
10 ইন্টি * পিবিএসআই;
11 ইন সিডব্লিউএসজেড;
12 স্বাক্ষরবিহীন wHash = 0;
13 pch = sz;
14 যখন (* pch! = 0)
15 ডাব্লু হ্যাশ = (ডাব্লুএইচআশ 11 + * পিএইচ ++;
16 সিএইচ = pch-sz;
17 pbsy = & rgbsyHash [(wHash & 077777)% cwHash];
18 এর জন্য (; * pbsy! = 0; pbsy = & psy-> bsyNext)
19
20 চর * szSy;
21 এসজেএসআই = (পিএসআই = (স্ট্রাক্ট এসওয়াই *)) ​​এবং আরজিডব্লিউডিক [* পিবিএসআই]) -> এসজেড;
22 pch = sz;
23 সময় (* pch == * szSy ++)
24
25 যদি (* pch ++ == 0)
26 রিটার্ন (সাইক);
27
28
29 cwSz = 0;
30 যদি (সিএইচ> = 2)
31 সিডব্লিউএসজেড = (সিএইচ -২ / আকারের (ইনট) +1;
32 * পিবিএসি = (ইনট *) (পিএসআই = সাইক্রেট (সিডব্লিউএসওয়াই + সিডব্লিউএসজেড)) - আরজিডাব্লুডিক;
33 শূন্য ((int *) psy, cwSY);
34 bltbyte (sz, psy-> sz, cch + 1);
35 রিটার্ন (সাইক);
36

5
ওউ ওউ ওউ ওউ ওউ!
ডক্টর জোনস

22
এই নমুনার সাথে সবচেয়ে বড় সমস্যা হ'ল অর্থহীন পরিবর্তনশীল নাম। হাঙ্গেরীয় উপসর্গগুলি সরিয়ে ফেলুন এবং এর মধ্যে কয়েকটি 1 বা 0 টি অক্ষর দীর্ঘ।
ফিনউইউ

8
এটি সিস্টেমেস হানি ভাষা, যা দুর্বল টাইপযুক্ত ভাষাগুলিতে কার্যকর (যেমন এই ভাষাগুলিতে নামগুলির জন্য কাজ করার জন্য গুরুত্বপূর্ণ ধরণের তথ্য এনকোড করে) - এটি দৃ strongly়ভাবে টাইপ করা ভাষায় অকেজো। দৃ strongly়ভাবে টাইপ করা ভাষাগুলির জন্য আরও ভাল বিকল্প হ'ল অ্যাপস হাঙ্গেরিয়ান, যা ভেরিয়েবল (সদস্য, পয়েন্টার, উদ্বায়ী, সূচক) এর ব্যবহার সম্পর্কে গুরুত্বপূর্ণ তথ্যকে এনকোড করে - এমন কিছু যা ভাষা নিজেই কোনও সমর্থন দেয় না।
জেসন উইলিয়ামস

5
অনুগ্রহকরে. আমি কখনোই থাকেন কি কখনো একজন সদস্য সঙ্গে একটি স্থানীয় বিভ্রান্ত, এবং আমি সদস্য / স্থানীয়দের / ক্ষেত্রের জন্য যে নিরীহ হাঙ্গেরীয় ব্যবহার করবেন না / যাই হোক না কেন। আমি মনে করি তারা এ 'নিরাপদ' এবং 'অনিরাপদ' পছন্দ স্ট্রিং বিভিন্ন ধরণের মধ্যে পার্থক্য, Joel এর উদাহরণটি জন্য সহায়ক হতে পারে ভুল কোড লুক ভুল মেকিং
Configurator

3
@ কনফিগ্রেটর: জোলের উদাহরণটি ভয়াবহ, তিনি বিভিন্ন প্রকারের থেকে ভাল হয়ে উঠতে পারেন, তবে সংকলকটি ব্যবহারটি কার্যকর করবে।
ম্যাথিউ এম।

28

আমি একবার এমন প্রকল্পে কাজ করেছি যেখানে প্রকল্পের নেতৃত্ব বাধ্যতামূলক করে যে প্রতিটি ভেরিয়েবল - প্রতিটি ভেরিয়েবল - "ভি" দিয়ে উপস্থাপিত হবে। সুতরাং, ভিকাউন্ট, ভিফার্সনেম, ভিআইএস ওয়ারেন্টি ইত্যাদি etc.

কেন? "কারণ আমরা ভিবিএস স্ক্রিপ্টে কাজ করছি এবং যাইহোক সবকিছুই ভেরিয়েন্ট"।

ডব্লিউটিএফ।


93
আমি একবার এমন ভাষায় কাজ করেছি যার প্রতিটি ভেরিয়েবল - প্রতিটি ভেরিয়েবল - "$" দিয়ে উপস্থাপিত হওয়া দরকার।
নোট

6
@ নাহাত: এবং আপনি বুঝতে পেরেছিলেন যে এটি আশ্চর্যজনক, তাই না?
জোশ কে

আমি একবার এমন ভাষায় কাজ করেছি যেখানে আমার সমস্ত চলক '$' বা '%' বা '@' এর মতো বিরামচিহ্ন দিয়ে শুরু হয়েছিল। আমি এখনও, এখন এবং তারপর না।
ডেভিড থর্নলি

3
এটি কেবলমাত্র তখনই সমস্যা হয়ে দাঁড়ায় যখন আপনার প্রয়োজনীয়তাগুলি fআগে কোনও কার্য্যকরণের আগে রাখা দরকার , তবে আপনার কোডটি সত্যই fUcked (vUp)
জো ডি

1
পার্লের বিভিন্ন সংস্করণের মতো শোনাচ্ছে ...

26

প্রায় এটিকে ভুলে গেছি:

একজন পরিচালকের উদ্ধৃতি:

আপনার নিজের কোডটিতে আপনি যে কোনও সমস্যা খুঁজে পেয়েছেন তা সমাধান বা ডকুমেন্ট করবেন না। গ্রাহক আমাদের পরবর্তী কয়েক বছরের মধ্যে তাদের সনাক্ত এবং ঠিক করার জন্য অর্থ প্রদান করবেন।

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


2
এটি একটি ভয়াবহ নীতি। আমি আশা করি এই ম্যানেজার ক্যানড ছিল।
বার্নার্ড

@ বার্নার্ড-বেশিরভাগ সংস্থায় দীর্ঘমেয়াদী উপার্জনের স্ট্রিম তৈরি করা দ্রুত প্রচারের ভিত্তি। আশা করা যায়, অন্য কেউ এতে ক্ষিপ্ততা দেখে এবং দুর্ঘটনাক্রমে তাকে পার্কিংয়ের জায়গায় চালিয়ে দিয়েছিল।
জিম রাশ

24

সমস্ত বেসরকারী পদ্ধতি, ধ্রুবক, এনাম এবং বৈশিষ্ট্যগুলিতে এক্সএমএল মন্তব্য প্রয়োগ করা হয়েছে।

এটি কিছু চমত্কার বিশৃঙ্খলাযুক্ত কোডের দিকে পরিচালিত করেছিল, বিশেষত যেহেতু শেষ ফলাফলটি হয় লোকেরা সমস্ত কিছুর জন্য একটি ফাঁকা কমেন্ট স্টাব তৈরি করতে বা ঘোস্টডক ইনস্টল করার জন্য এবং এটি স্বয়ংক্রিয়ভাবে তৈরি হওয়া মন্তব্যগুলিকে যুক্ত করার জন্য হিট / জিপ করছিল:

/// <summary>
/// Validations the handler.
/// </summary>
/// <param name="propertyName">The property name.</param>
public void ValidationHandler(string propertyName) 
{
   // whatever
}

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


13
' Validations the handler' - উহ-ওহ
এরিক

8
+1 উঘ আমি এটিকে ঘৃণা করি। আমি মনে করি আপনার যদি সফ্টওয়্যার ব্যবহার করে মন্তব্য তৈরি করা হয় তবে আপনার সেগুলির দরকার নেই।
bleevo

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

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

7
নথিভুক্তকরণের ক্লাসিক কেস। যে মন্তব্যগুলি স্পষ্টতই স্পষ্টতই কিছু বলতে না পারে সেগুলি চোখের সামনে হত্যা করা উচিত।
কুম্বায়াহ

23

প্রকৃতপক্ষে কোনও কোডিং মান নয়, তবে আমাদের কাছে সোর্স কন্ট্রোলের একটি ফাইল ছিল যা 'চেঞ্জলগ। টেক্সট' বলে called

যতবারই আপনি একটি চেকইন করেছেন, আপনাকে এই ফাইলটিতে ম্যানুয়ালি একটি এন্ট্রি যুক্ত করতে হবে। এই এন্ট্রিটি ছিল সাবস্ট্রেশন রিভিশন নম্বর এবং আপনার চেকিন মন্তব্য।

যখন নতুন সিটিও শুরু হয়েছিল এবং কেউ তাকে এটি বললে তিনি তত্ক্ষণাত্ একটি কার্যনির্বাহী সিদ্ধান্ত নেন এবং বলেছিলেন, "আমরা এটি আর করব না" এবং ফাইলটি মুছে ফেললেন। বছরের পর বছর ধরে এটি চলছিল।


6
আর কারও জানা ছিল না svn log?
Htbaa

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

20

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

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


3
আমি সম্প্রতি প্রচুর মন্তব্যে আউট কোড মুছে ফেলছি।
কোডারডেনিস

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

আমি সম্পূর্ণভাবে রাজী. কোডটি যতক্ষণ না আপনি এটির সাথে কাজ করছেন ততক্ষণ পর্যন্ত মন্তব্য করা ঠিক আছে তবে রিলিজ সংস্করণে / মুখ্য শাখায় যা কিছু যায় তা মন্তব্য করা কোডকে বাতিল করা উচিত। কেউ আমাকে বলেছিল যে তারা "এটি কীভাবে অন্যভাবে করা যায় তা জানতে পছন্দ করে"। আমি কেবল উল্লিখিত কারণগুলির জন্য বিরক্তিকর বলে মনে করি: এটি কি অপ্রচলিত, একটি কাজ, এটি করার অন্য উপায়? ডাব্লুটিএফ
অ্যান শোয়সলার

ভিএস ২০১৩ "পিকস" এর সাথে উইন্ডোটি সবই শেষ। তবে আমরা একটি মন্তব্য রেখেছি যাতে "চেঞ্জড ইক্যুয়েশন - ইনিশিয়ালস" বা অন্য কিছু লেখা আছে, তাই কেউ ভাবছেন যে টিএফএস / ভিসিএসে পুরানো কোডটি কী প্রয়োজন তা যদি প্রয়োজন হয়। সুতরাং এটি 10 ​​টি কমেন্ট-আউট লাইনের পরিবর্তে এক লাইন। তবে ভিএস2013 দুর্দান্ত, এটি আপনার জন্য ঠিক সেখানে টিএফএসের ইতিহাস দেখায়।
সুমেরে

17

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


16

সংস্করণ নিয়ন্ত্রণের জন্য ইনলাইন মন্তব্য জোর করা সবচেয়ে অবাস্তব কোডিং মান সম্পর্কে আমি উপেক্ষা করেছি।

//Changed on 2/2/2004 By Ryan Roberts for work item #2323332
Dim Some Horrendous VB
//End Changed

200 টিরও বেশি ক্ষেত্র এবং 40 টি ট্রিগার রয়েছে এমন একটি অত্যন্ত বিতর্কিত টেবিল সহ একটি ডাটাবেস 'বজায় রাখার' সময় হোয়াইটস্পেসের সঠিক ব্যবহারের জন্য জোর দিয়েছিল ওরেল ডিবিএ, নিকটে আসে।


যে বেশ জঘন্য ব্যাপার
ইভান বোয়াল-জাতীয় মত্স্যবিশেষ

5
Mmm। দিম সুম ...
কনফিগারকারী

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

আমাদের সিনিয়র দেব এখনও আমাদের এটি করতে বাধ্য করার চেষ্টা করে। আমি যখনই মনে করি আমি এটি থেকে দূরে যেতে পারি (এবং কখনও কখনও যখন আমি জানি যখন আমি পারব না) নীতি উপেক্ষা করি।
জোশুয়া স্মিথ

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

14

আমি সি ++ ফার্স্ট টাইমারের নেতৃত্বে এমন একটি প্রকল্পের কোড কোড রিভিউ করেছি যা সিদ্ধান্ত নিয়েছিল যে সমস্ত শ্রেণীর সদস্যের ফাংশনটিকে শ্রেণীর নাম এবং দৃশ্যমানতার সাথে উপস্থাপিত করা উচিত:

class MyClass
{
   public:
      void MyClass_Public_setValue(int value);
}

1
আপনি তাদের জিজ্ঞাসা করেছেন কেন ? আমি কেবল তাদের অনুপ্রেরণা জানতে চাই ..
জেবিআরউইলকিনসন

1
বাহ, কেন লোকটি এমনকি ক্লাস ব্যবহার করছে ?
মতিন উলহাক

9

চারটি স্পেসে সমস্ত কোড ইনডেন্ট করা প্রয়োজন;)


2
এ কেমন খারাপ ছিল?
জে বাজুজি

1
কারণ তখন প্রতিটি লাইনের শুরুতে 4 টি অপ্রয়োজনীয় স্থান রয়েছে?
nohat

ওহ, আমি এখন এটি পেয়েছি।
বিকল্প

21
হ্যাঁ, স্ট্যাকওভারফ্লোতে সত্যই খারাপ কোডিং মান রয়েছে। :-)
পি Shved

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

9

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


এটি একটি ভয়াবহ, ভয়াবহ কোডিং মান অনুসরণ করতে হবে। এবং এটির জন্য একটি বোকা কারণও!
গ্যাবলিন

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

8

কোডিং মান না থাকা কীভাবে আঘাত করতে পারে তার এটি আরও উদাহরণ।

একটি বৃহত ব্যাংকে কর্মরত একজন ঠিকাদার জোর দিয়েছিলেন যে মানগুলি অনুসরণ করা এখন পর্যন্ত সবচেয়ে ভাল। অ্যাপ্লিকেশনটি ডিবেস / ক্লিপারে লেখা ছিল যা তিনি একমাত্র বিকাশকারী ছিলেন এবং অবশ্যই তিনি স্ট্যান্ডার্ড নিয়ে এসেছিলেন।

  • সব কিছুই আপার ক্ষেত্রে আছে। আমি তার বিরল মন্তব্য সহ সমস্ত কিছু বোঝাতে চাইছি।
  • কোনও ইন্ডেন্টেশন নেই।
  • পরিবর্তনশীল নামকরণ APRGNAME এর লাইনে কিছু ছিল। ভ্যারিয়েবলের এ = স্কোপ, যেমন জনসাধারণের জন্য পি, পিআরজি = উত্স ফাইলটির প্রথম তিনটি অক্ষর যা ভেরিয়েবল তৈরি করেছে, ডিএবেস / ক্লিপারের অনুমোদিত remaining টি অক্ষরের মধ্যে NAME = পরিবর্তনশীল নাম।
  • উত্স কোডের প্রথম 4 এবং শেষ 4 টি লাইন 80 * দীর্ঘ ছিল। কেন? সুতরাং তিনি ডট ম্যাট্রিক্স প্রিন্টারটি কোনও ফাইলের মুদ্রণ শুরু এবং শেষ করতে শুনতে পেলেন। মেমোরিটি হ'ল পুরো প্রোগ্রামটি মেইনফ্রেম সাপ্তাহিক 20,000 পৃষ্ঠাগুলির মাধ্যমে ছাপা হয়েছিল।
  • আমি নিশ্চিত যে আরও অনেকগুলি ছিল যা আমি আমার মস্তিষ্ক থেকে সরিয়ে ফেলতে পেরেছি।

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

এবং হ্যাঁ আমরা ম্যানেজমেন্টকে বলেছিলাম যে এই অনুশীলনগুলি কতটা খারাপ ছিল কিন্তু সর্বদা স্বাভাবিকভাবেই পাওয়া যায় "এই ঠিকাদারকে শীর্ষ ডলার প্রদান করছিলেন তিনি অবশ্যই জানেন যে তিনি কী সম্পর্কে কথা বলছেন"।


7
দয়া করে পুরানো ডাইনোসরগুলিকে উপহাস করবেন না। তারা আমাদের সম্ভব করেছে।
পি Shved

4
কাজের সুরক্ষার মতো শোনাচ্ছে।
এমআইএ

7
অডিও মার্কার থাকা যাতে আপনি জানতে পারবেন যে প্রতিটি ফাইল মুদ্রণ করা কবে বুদ্ধিমান। আমি \07এখন প্রতিটি ফাইলের শুরুতে যুক্ত করতে যাচ্ছি ।
কনফিগারকারী

2
এই জাতীয় নামকরণের স্কিমটি ব্যবহার করা (আপার ক্ষেত্রে নয়) কিছুটা অর্থবোধ করেছিল কারণ ডিবেসের ভেরিয়েবল "স্কোপিং" বিধিগুলি অ-অরক্ষিত ছিল। সবকিছু কার্যকরভাবে বিশ্বব্যাপী ছিল। একটি iপদ্ধতিতে একটি অ্যারে সূচক করতে ব্যবহৃত iএকটি কলিং পদ্ধতিতে হস্তক্ষেপ করতে পারে । আপনার এই "ছায়াময়" প্রতিরোধ করতে PRIVATE ALL LIKE m*এবং ব্যবহার করতে হবেPRIVATE i
গেরি

8

আমার অতীত থেকে আরও একটি বিস্ফোরণ।

সংস্থার মালিকের উদ্ধৃতি:

ইন্টারপ্রিটিভ ভাষাগুলি ব্যবহার করে কোনও লিখিত কোড থাকবে না কারণ জাভাতে লেখা {এক্সপ্লিটিভ} প্রকল্পে আমি 25 মিলিয়ন লোককে হারিয়েছি।

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

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

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

উভয় ক্ষেত্রেই, ডিক্টেটস নেমে আসার পরেই আমি চলে গেলাম।


না হয় সংস্থা আজও চলছে?
Finnw

যা জাভা থেকে 'সরানো' হয়েছে, অন্যটি অনেক দিন ধরে চলে গেছে। তারা টিআরএস -৩০ থেকে কোনও পিসিতে চলে যায়নি।
ডেভিড বি

6

প্রচুর প্রোগ্রামারদের মতো (তবে পর্যাপ্ত নয়), আমি কোড সজ্জা ঘৃণা করি। ভেরিয়েবলের নামের জন্য ডলারের চিহ্ন ($) প্রিফিক্স বা বেসিক ভেরিয়েবলের আন্ডারস্কোর ব্যবহার করতে হয়, এমনকি কোনও গিটার / সেটটার না থাকলেও তা আমার উত্সাহিত করে। এটি বুঝতে যদি আপনার কোডটি সাজাতে হয়, তবে আপনাকে নরকে বের করে আনা দরকার!


ঠিক আছে, যেমন "উইল" বলেছে, "আমি আন্ডারস্কোরটি দিয়ে আগে থেকেই প্রিপেন্ড করি যাতে আমার প্রাইভেট ভেরিয়েবলগুলি আমার ইন্টিলিসেন্সে গোষ্ঠীভূত হয় However তবে, আমি কেবল এটি একটি ধরণের স্কোপযুক্ত ভেরিয়েবলগুলির জন্যই করি। একটি পদ্ধতিতে সংক্ষিপ্ত ঘোষিত ভেরিয়েবলগুলি আমি আন্ডারস্কোর ছাড়ি বন্ধ। এগুলি পৃথক রাখা এবং কম ব্যবহৃত ভেরিয়েবলগুলি একসাথে রাখা সহজ করে তোলে "" এবং আমি তার সাথে একমত হতে হবে।
7wp

1
আমি মনে করি না যে আপনার ভেরিয়েবলগুলি আপনার প্রিয় মালিকানাধীন আইডিইতে একসাথে ভাগ করে নেওয়া আপনার সমস্ত কোডকে অকার্যকর করার পক্ষে যথেষ্ট যথেষ্ট কারণ।
অ্যাডাম হার্ট

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

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

6
দীর্ঘশ্বাস ত্যাগ করুন ... এই "আইডিই'র আরেকটি হলেন পসিজিদের জন্য।
নাইলার

6

আমি কিছু সময়ের জন্য একটি ওয়েব সিস্টেমের সাথে কাজ করছি যেখানে পাস করা সমস্ত প্যারামিটারগুলির নাম রাখার দরকার ছিল P1, P2, P3 ইত্যাদি hell

এছাড়াও - যদিও কঠোরভাবে কোডিং মান নয় - একই সিস্টেমে প্রতিটি একক ফাইলের নাম xyz0001.ext, xyz0002.ext, xyz0003.ext, ইত্যাদি রাখা উচিত - যেখানে xyz নিজেই অ্যাপ্লিকেশনটির জন্য কোড ছিল।


6

এটি দীর্ঘ সময় ছিল - 1976 অবিকল ছিল। আমার বস কখনও এডজার ডিজকস্ট্রার কথা শুনিনি বা সিসিএএম-র কোনও সমস্যা পড়েনি, তবে কোথাও কোথাও একটি গুজব শুনেছিল যে "জিওটিও খারাপ", সুতরাং আমাদের কোবোল প্রোগ্রামগুলিতে আমাদের জোটো ব্যবহারের অনুমতি দেওয়া হয়নি। এটি সিওবিওএল "শেষ যদি" ​​যুক্ত করার আগেই ছিল, সুতরাং তখন এটি তিনটি ক্লাসিক নিয়ন্ত্রণ কাঠামোর (কেবল ক্রম, যদি / তারপর / অন্যথায়, সঞ্চালন (অর্থাৎ করণীয়)) কেবল আড়াই থেকে আড়াই ছিল। তিনি মূ .়ভাবে আমাদের বেসিক প্রোগ্রামগুলিতে GOTO এবং আমাদের এসেম্ব্লার ভাষা প্রোগ্রামগুলিতে শাখার নির্দেশাবলী মঞ্জুরি দিয়েছিলেন।

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


6

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

private string DoSomething( bool verbose )
{
    if ( verbose ) { return someString; }
    else if ( !verbose ) { return otherString; }
    else { return string.Empty; }
}

এমনকি রিসার্পার আপনাকে বলেছিল এটি ভুল!


9
অকার্যকর হিসাবে ঘোষিত কোনও ফাংশন থেকে কিছু ফিরিয়ে দিতে আপনার উপর চাপ দেওয়া হবে।
মিরসিয়া চিরিয়া

7
@ এমএটিটিবি চূড়ান্ত ( else) শাখা কী পরিস্থিতিতে নেওয়া হবে তা বিবেচনা করুন ।
রিচার্ড

6
অন্যথায় {ফেরত স্ট্রিং। এমপিটি; from উপরের 2 টি লাইন এখন থেকে 5 বছর পরে কোনও রক্ষণাবেক্ষণ বিকাশকারী দ্বারা সম্পাদনা করা হলে কার্যকর করা হবে। যাইহোক, স্ট্রিংকে ফিরে আসবে mpEmpty সত্যটি লুকিয়ে রাখবে যেটি একটি অসম্ভব শর্ত হিসাবে ব্যবহৃত হয়েছিল । এর পরিবর্তে এটি অবৈধপ্রকাশের ধারণাটি ছুঁড়ে ফেলা উচিত ("এই কোডটি তিনটি মান যুক্তিকে সমর্থন করার উদ্দেশ্যে নয়");
ম্যাথিউমার্টিন

1
এটা ভয়াবহ। এর সাথে কী হয়েছে return verbose ? someString : someOtherString;?
কলম রজার্স

1
@ ক্যালাম টার্নারি অপারেটর নিষিদ্ধ হতে পারে :) এর আগে সেখানে ছিলেন ...
hplbsh

6

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

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

তিনি ছাড়ার সাথে সাথে আমি এগুলি পরিবর্তন করতে শুরু করি।


"বিভ্রান্তিকর নামগুলি ব্যবহার করবেন না" আমার পক্ষে যথেষ্ট ন্যায্য বলে মনে হচ্ছে ...
8128

1
এটি একেবারে ন্যায্য গাইডলাইন। আমার বক্তব্যটি তিনি একেবারেই অনুসরণ করেননি। আমার ধারণা "বিভ্রান্তিকর নয়" এবং তার সম্পর্কে আমার ধারণাটি আলাদা ছিল।
বেন ডুম

4

সি ++ কোডার হিসাবে আমার জীবনে, দুটি সত্যই দুষ্ট "নিয়ম" প্রয়োগ করা হয়েছিল:

  1. "আমরা এসটিএল ব্যবহার করতে পারি না, কারণ ভিসি ++ 4.1 এটি সমর্থন করে না (এবং আমরা এই মুহুর্তে ভিসি ++ 6.0 এ যেতে পারি না)"
  2. " কুইকসোর্ট ব্যবহার করবেন না , কারণ এটি খারাপ ক্ষেত্রে ও (এন ^ 2) হতে পারে; ছাত্র হিসাবে লেখা হিপসোর্ট অ্যালগরিদম I (প্রকল্প নেতার নাম) এর এই প্রয়োগটি ব্যবহার করুন।"

6
প্রকল্পের নেতৃত্বের হিপসোর্টে কী ভুল ছিল?
7wp

4
আসলে কোড গৃহীত বহিরাগত ব্যবহারকারী ইনপুট কুইকসোর্টটি ভুল হতে পারে কারণ এটি O(n^2)ডস আক্রমণগুলিতে খোলে (সবচেয়ে খারাপ ক্ষেত্রে ইনপুট খাওয়ানো)। এছাড়াও কেন এটি স্যুইচ করা সম্ভব হয়নি - এটি নিজেই এসটিএল ব্যবহার না করার বৈধ অজুহাত ছিল।
ম্যাকিয়েজ পাইচোটকা

4

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

public class User 
{
    /// <summary>
    /// the _userID
    /// </summary>
    private int _userID;
}


হ্যাঁ. আপনি সমস্ত আমার ব্যক্তিগত সদস্যদেরও মন্তব্য করা প্রয়োজন। যা আরও কম বোধ করে।
কার্ল বার্গকুইস্ট

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