সরলতা কি সর্বদা পাঠযোগ্যতার উন্নতি করে?


32

সম্প্রতি, আমি আমাদের সংস্থার জন্য কোডিং মানের একটি সেট তৈরি করছিলাম। (আমরা একটি নতুন টিম কোম্পানির জন্য একটি নতুন ভাষায় শাখা করছি))

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

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

তবে, আমি এই চাপের পিছনে অনুমানকে প্রশ্নবিদ্ধ করেছি:

সরলতা কি সর্বদা পাঠযোগ্যতার উন্নতি করে?

সরল কোড লেখার ফলে পাঠযোগ্যতা হ্রাস পাচ্ছে এমন কোন ঘটনা কি আছে?

এটি সুস্পষ্ট হওয়া উচিত, তবে "সরল" দ্বারা, আমি "সহজভাবে লিখতে সহজ" নয়, তবে প্রতি লাইনে কম জিনিস চলছে।


16
তাহলে বিকল্প "চালাক" কোড, তাহলে হ্যাঁ ... নেই
ওবেদের

2
হ্যাঁ - প্রতি Occam এর ক্ষুর - en.wikipedia.org/wiki/Occam%27s_razor
aggietech

17
সর্বদা এবং কখনই এরকম কঠোর পদ ব্যবহার না করার চেষ্টা করুন। এটি হ'ল প্রান্তের ক্ষেত্রে ফোকাস এড়ানো এবং পরিবর্তে আমরা सामना করা সবচেয়ে সাধারণ বিষয়গুলিতে ফোকাস করা। এটিই সর্বোত্তম অনুশীলনগুলি।
P.Brian.Mackey

আসলে, আপনি প্রতি লাইনে 2 ফাংশন / ক্রিয়াকলাপ চান। a = bএকটি অপারেশন, b + cদ্বিতীয়, যার অর্থ a = b + c2 অপারেশন। 2 ফাংশন / অপারেটরগুলির শৃঙ্খলা এখনও পঠনযোগ্য:, foo(bar())বা a = foo()
zzzzBov

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

উত্তর:


47

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

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

count :: [Integer] -> [[Integer]]
count [] = [[]]
count (x:xs) =
  -- get all possible sequences for the remaining digits
  let
    remDigits :: [[Integer]]
    remDigits = count xs
  in
  -- pull out a possible sequence for the remaining digits
  do nextDigits <- remDigits
     -- pull out all possible values for the current digit
     y <- [0..x]
     -- record that "current digit" : "remaining digits" is
     -- a valid output.
     return (y:nextDigits)

উত্তরগুলির মধ্যে একটি এটিকে হ্রাস করে:

count = mapM (enumFromTo 0)

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


11
কিছু বিকাশকারী ওয়ান-লাইনার বুঝতে এবং পছন্দ না করা অবধি অগ্রগতি করবে। এমন একটি বিকাশকারী কল্পনা করা শক্ত যে লম্বা সংস্করণটি পছন্দ করতে আসা ওয়ান-লাইনারটি বোঝে। সুতরাং আইএমও ওয়ান-লাইনার পরিষ্কারভাবে আরও ভাল।
কেভিন ক্লাইন

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

6
একটি পাল্টা পয়েন্ট হিসাবে: আপনি অভিজ্ঞ হাসেল্লার হিসাবে দেওয়া, আপনি দ্বিতীয় নজরে এক নজরে পড়তে পারেন। অন্যদিকে, প্রথম সংস্করণে আরও কোড পড়ার এবং বোঝার প্রয়োজন হবে; আপনি এক নজরে এটি করতে পারেন না। আমি মনে করি এটি দ্বিতীয় সংস্করণটিকে সহজ করে তোলে।
টিখন জেলভিস

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

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

13

যদি আপনার কোডিং মানটি "পঠনযোগ্যতা, রক্ষণাবেক্ষণযোগ্যতা, নির্ভরযোগ্যতা এবং পারফরম্যান্স" সম্পর্কে থাকে তবে কেবল এটি উল্লেখ করুন

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

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


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

5
আমার যুক্তি হ'ল যে কঠোর নিয়মগুলি নির্ধারণ করা অযথা চেয়ে খারাপ এবং আসলে ক্ষতিকারক। প্রতি লাইনে একটি স্টেটমেন্টের মতো নিয়ম সেট করা স্টাইলিস্টিক। এই জিনিসটি অবশ্যই কোডের নির্দেশিকায় থাকা উচিত নয় । এটি প্রকৃত সুবিধা দেয় না এবং পাঠ্যতা এবং রক্ষণাবেক্ষণের পক্ষে ক্ষতিকারক হতে পারে যদি চিন্তা না করে প্রয়োগ করা হয়।
মার্টিন ইয়র্ক

3
+1 (কারণ আমি +10 করতে পারি না) নতুন প্রোগ্রামিং পরিচালকদের সাথে আমি যে সাধারণ ভুলটি দেখি তা হ'ল তারা সর্বশেষ বিশদটি কোড করার চেষ্টা করে। সেরা কোডিং মানগুলি রেসিপিগুলির চেয়ে ভাগ্য কুকির মতো are
জনএফএক্স

"কোডিং শৈলী এবং মান" নথির নাম ছিল। স্পষ্টতই এটি কোনও স্ট্যান্ডার্ড নয় (যেমন "কখনই GoTo ব্যবহার করবেন না" বা "কখনই শর্ট ইনট ব্যবহার করবেন না") তবে একটি স্টাইল নয়। একীকরণ শৈলী পাঠযোগ্যতা এবং রক্ষণাবেক্ষণযোগ্যতার জন্য গুরুত্বপূর্ণ।
রিচার্ড

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

7

"প্রতি লাইনে কম জিনিস", সরলতা এবং পঠনযোগ্যতা একই জিনিস নয় are কেউ একটি অবিশ্বাস্যরকম জটিল অস্পষ্ট অননুমোদিত অ্যালগরিদম নিতে পারেন এবং এটি 2 এর পরিবর্তে প্রতি লাইনে 1 টি স্টেটমেন্ট দিয়ে কোড করতে পারেন এবং এটি এত বেশি পাঠযোগ্য হয় না।

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

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


5

সর্বদা? - না

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

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


5

যদি আমি সরলতার জন্য যাই তবে আমি এই জাতীয় কোড লিখতে পারি:

10000000000000000000000000000000000000000000

তবে আমি যদি পঠনযোগ্যতার পক্ষে যাই তবে আমি এটিকে পছন্দ করব:

1e43

অন্যদিকে, আপনি যতক্ষণ না বৈজ্ঞানিক স্বরলিপিতে সার্বক্ষণিক সংখ্যার সাথে কাজ না করে তার 1000চেয়ে অনেক বেশি পঠনযোগ্য এবং সহজ 1e3

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


"100e" এর তুলনায় "1e3" কম পঠনযোগ্য হওয়ার বিষয়ে আপনার বক্তব্যটি ভালভাবে লেখা আছে। প্রকৃতপক্ষে, জ্ঞানীয় লোড কীভাবে পাঠযোগ্যতার উপর প্রভাব ফেলে এটি এর একটি দুর্দান্ত উদাহরণ। "1e3" এর জন্য 3 টি অক্ষর পড়া দরকার, এবং এক্সপেনশনটির অনুবাদ করা উচিত। "100" পড়ার জন্য 3 টি অক্ষর পড়া দরকার এবং এর পরে আর কোনও মূল্যায়ন করা যায় না।
স্টিফেন গ্রস

স্টিফেন, আসলে 100আপনার মতো তিন-অঙ্কের সংখ্যা পড়ার সময় আপনাকে দুটি গুণ এবং দুটি সংযোজন ( 0+10*(0+10*1)) করতে হবে। যাইহোক, এই স্বরলিপি ব্যবহার করে, আপনি এমনকি এটি লক্ষ্য করবেন না। এটি আবার দেখায় যে সরলতার ধারণাটি কতটা সাবজেক্টিভ হতে পারে।
রোটসর

মজাদার. সুতরাং, কঠোরভাবে বলতে গেলে, "100" এর জন্য 2 গুণ (1 * 100, 0 * 10) এবং 2 সংযোজন ক্রিয়াকলাপ প্রয়োজন। "1e3" এর জন্য একটি গুণ গুণ রয়েছে। সুতরাং, কোনও জ্ঞানীয় প্রসঙ্গে অনুপস্থিত , "100" "1e3" এর চেয়ে পড়া শক্ত। কিন্ত! আপনি যদি প্রসঙ্গ-স্যুইচিং জ্ঞানীয় লোড অন্তর্ভুক্ত করেন তবে গণনাটি আলাদা। যেহেতু আমরা সাধারণত অ বৈজ্ঞানিক আকারে পূর্ণসংখ্যা পড়ি তাই "100" সহজ। তবে, আমরা যদি এমন একটি ইঞ্জিনিয়ারিং অ্যাপ লিখছি যেখানে সমস্ত সংখ্যা বৈজ্ঞানিক স্বরলিপিতে প্রকাশ করা হয়, তবে "1e3" ফর্মটি সহজ!
স্টিফেন গ্রস

2

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


জটিলতা অদম্য নয়। জটিলতা পরিচালনা করার চেষ্টা করার জন্য আমাদের কাছে "বিমূর্তি" এবং "চুনকিং" এবং "সংস্থা" রয়েছে। আমি মনে করব যে একটি জটিল অপারেশনকে বিভিন্ন সহজ পদক্ষেপে বর্ণনা করা যেতে পারে। সারসংক্ষেপ, সার্বিক অবস্থা, ইত্যাদি: এটা অনেক বাস্তব জগতের শারীরিক প্রসেসের জন্য কাজ করে
S.Lott

1
@ এস.লট: সত্য, তবে পর্যাপ্ত স্ক্রোলিং এবং সিআরটিএল-ক্লিক করা একটি "সরলিকৃত" প্রক্রিয়া অনুসরণ করা আরও কঠিন করে তুলতে পারে। আমি এটি একবার বা দু'বার ঘটতে দেখেছি (এটি সাধারণ নয় তবে এটি খুব বেশি দূরে গেলে কাজ করা খুব হতাশার কারণ হতে পারে)।
হতাশ

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

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

1
@ এস.লোট - আপনি যদি দাবি করছেন যে ক্রিসমাসের দিন আপনি বৃহস্পতির অবস্থান সম্পর্কে ভবিষ্যদ্বাণী করতে পারেন তবে কিছুই না G=0, আমার মনে হয় আপনি উন্মাদ। যদি আপনি না হন তবে আপনি আমার কথাটি মিস করছেন। অবশ্যই আপনি অপ্রাসঙ্গিক বিশদ বিমূর্ত করতে পারেন, কিন্তু আপনার প্রয়োজনীয়তা এটি প্রাসঙ্গিক বলে যদি এটি অপ্রাসঙ্গিক নয়। আপনি যদি আবার পড়েন তবে আমি কখনও দাবি করি নি যে সমস্ত জটিলতা প্রয়োজনীয় - কেবলমাত্র কিছু জটিলতা প্রয়োজনীয়তার অন্তর্নিহিত এবং এটি নির্মূল করা যায় না।
স্টিভ 314

2

স্পষ্টতা + মানক + কোড পুনরায় ব্যবহার + ভাল মন্তব্য + ভাল ডিজাইন পাঠযোগ্যতা উন্নত করতে পারে ।

সরলতা সর্বদা বিকাশকারীর হাতে থাকে না কারণ আজকাল অ্যালগরিদমের প্রকৃতি এবং প্রয়োগ কাঠামোর জটিলতা।

সাধারণ ওয়েব পৃষ্ঠাগুলি নিন যা সাধারণ কার্য সম্পাদন করে। একটি সাজানোর রুটিন দেওয়া, যুক্তিটি সহজ করা সম্ভব নয়, তবে আপনি মন্তব্যগুলির সাথে অর্থপূর্ণ পরিবর্তনশীল নামগুলি ব্যবহার করে এটি কাঠামোগত পদ্ধতিতে লিখে রেখে পরিষ্কার করতে পারেন etc.


2

সরলতা কি সর্বদা পাঠযোগ্যতার উন্নতি করে?

না। আমি প্রচুর মামলা দেখেছি যেখানে এক লাইনে একাধিক সরল কাজ করা একাধিক লাইনের চেয়ে কম জটিল।

কম কোড এবং সহজ কোডের মধ্যে একটি বাণিজ্য রয়েছে।

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


1

"জিনিসগুলি যতটা সম্ভব সহজ করুন, তবে সহজ সরল নয়" - অ্যালবার্ট আইনস্টাইনের প্রায়শই একটি প্যারাফ্রেজ

সরলতা সবকিছুর উন্নতি করে । সরলতার বিভিন্ন মূল্যবোধের জন্য অবশ্যই। এটি কি কোডের কম লাইন? হতে পারে. এটি কি আরও ছোট কার্যকর? সম্ভবত। এটি কি আপনার দলের একমত হওয়া দরকার? একেবারে


উদ্ধৃতিটির জন্য +1, তবে কি সরলতা পাঠযোগ্যতার উন্নতি করবে?
রিচার্ড

"যতটুকু সম্ভব জিনিসগুলি সহজ করুন তারপরে সরল করুন" এসডাব্লু ইঞ্জিনিয়াররা ওভার ইঞ্জিনিয়ারিংয়ের ঝুঁকিপূর্ণ হওয়ায় এটি একটি ভাল প্যারাফ্রেজ।
mattnz

1
আমি আশা করি লোকেরা "জিনিসকে যতটা সম্ভব সহজ করুন, তবে সহজ নয়" বলা বন্ধ করে দেয়। অকার্যকর জেনারেল ইঞ্জিনিয়ারিং টিপ হিসাবে যেতে আমরা কি কমপক্ষে MakeAsGoodAsP ممڪنButNoMoreSo <থিং, অ্যাট্রিবিউট> তে সাধারণকরণ করতে পারি না? (দুঃখিত, জেসি সি স্লিকার, আপনি একমাত্র ব্যক্তির থেকে এটি উদ্ধৃত করার পক্ষে অনেক দূরে, সুতরাং আপনি অন্য কারও চেয়ে সত্যিই মিনি-রেন্টের যোগ্য নন)।
PSr

1

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

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

আরেকটি উদাহরণ: রেগুলার এক্সপ্রেশনের সাধারণত মাত্র এক লাইনে, অনেক কাজ, এবং একটি Regex ছাড়া সমতুল্য ঘন ঘন হয় অনেক কঠিন পড়তে। / \ d {3} [-] \ d {3} - \ d {4} / হ'ল কমপক্ষে বেশ কয়েকটি মন্তব্য সহ একটি ফাংশন কলের সমতুল্য, এবং সম্পর্কিত ফাংশন বডিটির চেয়ে বোঝা সহজ।


1

পঠনযোগ্যতা এবং সরলতা হ'ল বিষয়বস্তুর পদ যা ব্যক্তি এবং প্রসঙ্গে নির্ভর করে সাধারণত তবে সবসময় একসাথে যায় না।

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

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

সুতরাং, একটি ভাল-নির্বাচিত দীর্ঘ পরিবর্তনশীল নাম হতে পারে ...

  • আরও ভাল উদ্দেশ্য প্রকাশের মাধ্যমে পাঠযোগ্যতা উন্নত করুন
  • সংক্ষিপ্ততা হ্রাস - এটি দীর্ঘ, সর্বোপরি
  • সিনট্যাকটিক সরলতায় মোটেও কোনও প্রভাব ফেলবেন না - কোডটির সিনট্যাকটিক কাঠামো অপরিবর্তিত

একইভাবে, আমি লিখতে পারে if (some_boolean == true)। সমতুল্য বিকল্পের সাথে তুলনা করে if (some_boolean), এই ...

  • সংক্ষিপ্ততা হ্রাস করে
  • সিনট্যাকটিক সরলতা হ্রাস করে, কিন্তু
  • আরও ভাল অভিপ্রায় প্রকাশের মাধ্যমে পাঠযোগ্যতার উন্নতি করতে পারে।

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

যা অবশ্যই সামগ্রিক সাবজেক্টিভিটির আরও প্রমাণ।


1

আপনি সমস্ত কিছু মৌলিক সংজ্ঞা অনুপস্থিত । রুট সিম-প্লেক্স থেকে সরল, মানে এক ভাঁজ । সরল অর্থ একটি জিনিস করা । সহজ, মূল থেকে সহজ , মানে কাছাকাছি থাকা । সহজ মানে এটি হাতের কাছে রয়েছে । অন্যান্য উত্তরে দেওয়া সরল কোডের উদাহরণগুলি হুবহু প্রদর্শিত হয় না।

খুব বড় মানের রটারের প্রদর্শন নিন । তিনি বলেন এটি সহজ । আমার অনুমান অনুসারে, সহজ নয়। এটি সহজ. এটি প্রয়োজনীয় 0 এস এর সংখ্যা টাইপ করতে হাতের কাছে।

10000000000000000000000000000000000000000000

পাঠযোগ্য সংস্করণ সহজ। এটি একটি কাজ করে। এটি এই ফাংশনের জন্য নির্মিত একটি স্বরলিপি উদ্দেশ্যে তার আকারটি বর্ণনা করে সংখ্যাটি প্রকাশ করে।

1e43

আপনি কি আইডনের "সাধারণ" কোড স্নিপেটকে একটি জিনিস হিসাবে বর্ণনা করতে পারেন? এতে কোডের 10 টি লাইন রয়েছে (মন্তব্য গণনা করা হচ্ছে না) এবং কমপক্ষে 7 টি ব্লক (যেমন আমি তাদের গণনা করব)। আপনি যদি মন্তব্যগুলি অনুসরণ করেন তবে আপনি দেখতে পাবেন যে এটি কমপক্ষে 4 টি জিনিস করে!

count :: [Integer] -> [[Integer]]
count [] = [[]]
count (x:xs) =
  -- get all possible sequences for the remaining digits
  let
    remDigits :: [[Integer]]
    remDigits = count xs
  in
  -- pull out a possible sequence for the remaining digits
  do nextDigits <- remDigits
     -- pull out all possible values for the current digit
     y <- [0..x]
     -- record that "current digit" : "remaining digits" is
     -- a valid output.
     return (y:nextDigits)

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

count = mapM (enumFromTo 0)

আপনি যে সত্যিই পাবেন সহজ কোড চেয়ে বেশি পাঠযোগ্য সহজ কারণ এটি শুধুমাত্র এক জিনিস আছে কোড। সাধারণ কোডটি বুঝতে আপনার যেতে হবে এবং আরও "একটি জিনিস" শিখতে হবে । তবে এটি সর্বদা আরও পঠনযোগ্য হওয়া উচিত।


1

সরলতা কি সর্বদা পাঠযোগ্যতার উন্নতি করে?

আমি বলব, সম্ভবত কিছুটা বিতর্ক নিয়ে, একেবারেই নয়

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

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

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

সরলতা

একটা সময় ছিল, যেখানে আমি ভেবেছিলাম "সরলতা" এর অর্থ "যতটা সম্ভব পড়া সহজ" read সুতরাং আমি সি কোডটি উন্নত করার চেষ্টা করেছি এবং জিনিসগুলি যতটা সম্ভব পড়তে এবং লিখতে সহজ করে তুলতে চেষ্টা করেছি, সুবিধামত অনেক কার্যকারিতা সহ সি কোড লিখব would

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

পাতার মর্মর

তবুও 90 এর দশকের মাঝামাঝি (লেটকমার) এর আশেপাশে আমার এলআইএসপি নিয়ে একটি সংক্ষিপ্ত আবেগ ছিল। এটি "সরলতা" সম্পর্কে আমার সম্পূর্ণ ধারণাটি পরিবর্তন করেছে।

পাতার মর্মর হয় না অধিকাংশ পাঠযোগ্য ভাষা। আশা করি কেউই ভাবেন না যে নেস্টেড বন্ধনীগুলির একটি নৌকা বোঝা সহ একটি পুনরাবৃত্তির ক্রিয়াকলাপটি করার সময় সিডিআর এবং সিআর বের করা খুব "পঠনযোগ্য" is

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

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

এলআইএসপি-র পরে, আমার কাছে সরলতা ন্যূনতমতা, প্রতিসাম্যতা, নমনীয়তা, কম পার্শ্ব প্রতিক্রিয়া, কম তবে আরও নমনীয় ফাংশনগুলির সাথে হয়ে যায় যা অসীম বিভিন্ন উপায়ে একত্রিত হয়।

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

minimalism

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

নিরাপত্তা

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

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

sword = sharpen(sword)

... মানব চিন্তাধারা থেকে একটু কম সরল এবং বিচ্ছিন্ন:

sharpen(sword)

পঠনযোগ্যতা ভি.এস. সরলতা

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

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

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

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

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

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


0

সর্বদা? - হ্যাঁ

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

যে জায়গাগুলিতে ধারণাগুলির ঘন গুচ্ছ রয়েছে সেখানে মনোনিবেশ করুন এবং "খণ্ড" বা "সংক্ষিপ্তকরণ" বা "বিমূর্ত" উপায় খুঁজে বের করুন। এটিকে আরও সহজ এবং আরও পঠনযোগ্য করে তোলার জন্য কোডটির মাধ্যমে কয়েকটা পাস করুন।

একটি ভাল বিমূর্ততা সোনার এটির ওজন। একটি ভাল বিমূর্ততা এটিকে সহজ করে তোলে - এবং ফলস্বরূপ আরও পাঠযোগ্য।


আপনার ভীতিজনক উদ্ধৃতিগুলি সেখানে রয়েছে তা ভেবে আমি সহায়তা করতে পারি না কারণ আপনি জানেন যে "ধারণা" এবং "খণ্ড" এগুলি নিজেরাই সাবজেক্টিভ। একটি ব্যক্তি একক ধারণা হ'ল অন্য ব্যক্তি তিনটি স্বতন্ত্র ধারণার সংমিশ্রণ। বিষয়গত স্টাফগুলির একটি নিখুঁত এবং উদ্দেশ্যমূলক পদক্ষেপ নেওয়া শক্ত have
স্টিভ 314

@ স্টিভ 314: কোটকে ভয় পান? নং en.wikipedia.org/wiki/Chunking সব অনুরূপ হতে হবে যে, তারা কদর্য মাধ্যমে সরলীকরণ বর্ণনা বলে মনে হচ্ছে। (গিটার কৌশল ব্যতীত, এটি পৃথক বলে মনে হয়) উদ্ধৃতিগুলি এখানে জোর দেওয়ার জন্য রয়েছে যে এটি কোনওভাবে বিতর্কযোগ্য। এখনো. এটি সমস্ত সময় পরিষ্কারভাবে হয়ে গেছে এবং এটি একটি প্রাকৃতিক মানব প্রবণতা বলে মনে হয়।
এস .লট

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

@ স্টিভ 314: আমরা নিজেকে সর্বদা বিষয়গুলি বুঝতে সাহায্য করার জন্য সর্বদা বিমূর্ত, বিভক্ত এবং সংক্ষিপ্তকরণ করি। সর্বদা. খনন করা, বিমূর্ত করা, সংক্ষিপ্তকরণ ("সরলীকরণ") এমন কিছু যা আমরা সবসময় করি। আমরা শুধু করি। এটিই আমাদের মস্তিস্ক বাস্তবতা ধরা দেয়। সরলীকরণ সর্বদা পাঠযোগ্যতার উন্নতি করে এবং সর্বদা করা যায়।
এস.লট

হ্যা আমরা করি. আমি অন্যথায় কখনও বলেনি।
স্টিভ 314

-2

প্রশ্নগুলি স্ট্যাক ওভারফ্লো সম্পর্কে এই উত্তরটির স্মরণ করিয়ে দেয় , বিশেষত এই উদ্ধৃতি (সরলতার সাথে বিকল্প মানের):

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

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


1
এই কারণেই আমি প্রশ্নে সরলতার সংজ্ঞা দিয়েছি।
রিচার্ড

-2

প্রতি লাইনে একটি ফাংশন কল সহজ? আসুন একটি উদাহরণ চেষ্টা করুন!

=== One call per line ===
x = y.getThis()
a = x.getThat()
b = a.getSomethingElse()

=== Less "simple" version ===
b = y.getThis().getThat().getSomethingElse()

আপনি কি মনে করেন? লাইনে প্রতি একটি কল কি আসলে সহজ?


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

হাই স্টিফেন, আপনি কীভাবে এই প্রশ্নের উত্তরটির উত্তর দেন বলে বিশদটি বলতে পারেন? আপনি এখানে কী নির্দেশ করতে চাইছেন তা পরিষ্কার নয়।

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

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