কোড পড়ার জন্য দ্রুত শক্ত পাঠযোগ্য কোড সাফ করুন। কখন লাইন পার করবেন?


67

আমি যখন কোড লিখি আমি সর্বদা চেষ্টা করি আমার কোডটি যতটা সম্ভব পরিষ্কার এবং পঠনযোগ্য করে তোলার জন্য।

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

কখন যে লাইনটি পার করা ঠিক হবে?


69
আপনি আপনার নিজের প্রশ্নের উত্তর দিয়েছেন, যখন আপনাকে
gnibbler

6
এছাড়াও, আপনার "নোংরা কোড" এখন থেকে হার্ডওয়্যারে "ক্লিন কোড" এর মতো দ্রুত কাজ করতে পারে। যদিও উইন্ডোজ যেমন করেছিল তেমন ওভারবোর্ডে যাবেন না। :)
মতিন উলহাক

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

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

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

উত্তর:


118

আপনি যখন লাইন অতিক্রম করেন

  • আপনি পরিমাপ করেছেন যে এর উদ্দেশ্য ব্যবহারের জন্য আপনার কোডটি খুব ধীর
  • আপনি বিকল্প উন্নয়নের চেষ্টা করেছেন যাতে কোডটি মিকিংয়ের প্রয়োজন হয় না।

এখানে একটি বাস্তব-বিশ্বের উদাহরণ রয়েছে: আমি যে পরীক্ষামূলক সিস্টেমটি চালাচ্ছি তা খুব ধীরে ধীরে ডেটা তৈরি করছিল, প্রতি রান 9 ঘন্টা বেশি সময় নেয় এবং কেবল 40% সিপিইউ ব্যবহার করে। কোডটি খুব বেশি গণ্ডগোলের পরিবর্তে আমি সমস্ত অস্থায়ী ফাইলগুলিকে একটি ইন-মেমরি ফাইল সিস্টেমে সরিয়েছি। অ-কুৎসিত কোডের 8 টি নতুন লাইন যুক্ত হয়েছে এবং এখন সিপিইউ ব্যবহার 98% এর উপরে। সমস্যা সমাধান; কোন কদর্য প্রয়োজন।


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

4
@ পলআর আপনি কীভাবে এই কোডটি রাখেন? মতামত আকারে? এটি ভুল, ইমো - মন্তব্যগুলি পুরানো হয়ে যায়, কেউ সেগুলি পড়ে না এবং ব্যক্তিগতভাবে যদি আমি মন্তব্য করা কোড দেখি তবে আমি সাধারণত তা সরিয়ে ফেলি - এটি সোর্স নিয়ন্ত্রণের জন্য this এটি কী করে তা বোঝানোর পদ্ধতিতে একটি মন্তব্য আরও ভাল, তবে।
এভেজেনি

5
@ ইউজিন: আমি সাধারণত একটি রুটিনের নামকরণের মূল সংস্করণ রাখি fooএবং এটির পুনরায় নামকরণ করি foo_ref- সাধারণত এটি fooউত্স ফাইলটিতে তত্ক্ষণাত উপরে থাকে। আমার পরীক্ষার জোড়ায় আমি কল করি fooএবং foo_refবৈধতা এবং আপেক্ষিক পারফরম্যান্স পরিমাপের জন্য।
পল আর

5
@ পল যদি আপনি এটি করছেন তবে পরীক্ষার ব্যর্থ হওয়া ভাল ধারণা হতে পারে যদি অনুকূলিত সংস্করণ রেফ ফাংশনের চেয়ে ধীর হয় is এটি ঘটতে পারে যদি আপনি এটিকে দ্রুততর করার জন্য তৈরি অনুমানগুলি আর সত্য না হয়।
ব্যবহারকারী 1852503

57

এটি একটি মিথ্যা দ্বৈতত্ত্ব আপনি কোডটি দ্রুত এবং বজায় রাখা সহজ করতে পারেন।

আপনি যেভাবে এটি করেন তা হ'ল এটি পরিষ্কার লিখুন, বিশেষত যতটা সম্ভব ডেটা কাঠামোর সাথে।

তারপরে আপনি জানতে পারবেন যে সময় নালীগুলি কোথায় রয়েছে (এটি চালানোর পরে , এটি লেখার পরে , আগে নয়) এবং একে একে একে ঠিক করুন। (এখানে একটি উদাহরণ।)

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

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

আমার অভিজ্ঞতায়, এখানে প্রচুর প্রোগ্রাম শুরু হয়।


আমি রাজী. প্রকৃতপক্ষে দ্রুত কোড যা পরিষ্কার নয় তা শেষ পর্যন্ত ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে।
এডিএ-কিএ মার্ট-ওরা-ই

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

1
মার্ক, আপনি মন্তব্যের উত্তরগুলিতে "লিঙ্ক" URL টি দিয়ে লিঙ্ক করতে পারেন। প্রোগ্রামার.সটাকেক্সচেঞ্জ

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

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

31

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

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

"উন্মাদনার চূড়ায় কোডিং, যাতে আপনার দরকার নেই "

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

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


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

6
@ ঠাঁইরা সত্যই, এবং আমি যতদূর সম্ভব চেষ্টা করার চেষ্টা করি; তবে এটি কিছুটা শূকরকে লিপস্টিক লাগানোর মতো।
মার্ক গ্র্যাভেল

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

4
আপনি যেটা করছেন তা স্বাভাবিক ভাষার স্তরের নীচে বিমূর্ততার কয়েকটি স্তরের প্রকৃতি যদি হয় তবে @ আইমো কুরুচিপূর্ণ সিনট্যাক্সটি বেশ অনিবার্য ।
মার্ক গ্র্যাভেল

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

26

আপনি কোডটি প্রোফাইল করেছেন এবং যাচাই করেছেন যে এটি আসলে একটি উল্লেখযোগ্য মন্দার কারণ হয়ে দাঁড়িয়েছে।


3
এবং "তাৎপর্য" কী?
দাড়কাক

2
@ হটপাউ ২: এটি বুদ্ধিমান উত্তর - এটি ধরে নেয় বিকাশকারীরা অন্তত কিছুটা প্রতিযোগী। অন্যথায় হ্যাঁ, বুদ্বুদ সাজানোর চেয়ে দ্রুত কিছু ব্যবহার করা (সাধারণত) একটি ভাল ধারণা। তবে খুব সহজেই কেউ 1% পার্থক্যের জন্য হিপসোর্টের জন্য অদলবদলকে অদলবদল করে (কেবল বাছাই করে রাখতে), অন্য কারও জন্য একই কারণে ছয় মাস পরে এটি আবার অদলবদল করতে দেখা যায়।

1
নেই কখনো অ পরিষ্কার কোড করতে একটি কারণ। যদি আপনি আপনার দক্ষ কোডটি পরিষ্কার এবং সহজেই বজায় রাখতে না পারেন তবে আপনি কিছু ভুল করছেন।
এডিএ-কিএ মার্ট-ওরা-ই

2
@SF। - গ্রাহক সর্বদা এটি খুব ধীর পাবেন, যদি এটি আরও দ্রুত করা যায়। তিনি কোডটির "ক্লিনলেস" জন্য কোনও যত্ন করেন না।
দাড়কাক

1
@ রুক: গ্রাহক (তুচ্ছ) ইন্টারফেস কোডটি খুব ধীর খুঁজে পেতে পারেন। কিছু চমত্কার সহজ মনস্তাত্ত্বিক কৌতুকগুলি ব্যবহারিক অভিজ্ঞতার উন্নতি করে কোডটির তত্পরতা ছাড়াই ব্যবহারকারীর উন্নতি করে - ফ্লাইতে ক্রিয়া সম্পাদন করার পরিবর্তে পটভূমির রুটিনে ডিফার বোতাম ইভেন্টগুলি করে, একটি অগ্রগতি বার বা এর মতো কিছু দেখায়, ব্যাকগ্রাউন্ডে ক্রিয়াকলাপটি সম্পাদন করার সময় কিছু তুচ্ছ প্রশ্ন জিজ্ঞাসা করে ... এগুলি যখন পর্যাপ্ত হয় না, আপনি প্রকৃত অপ্টিমাইজেশন বিবেচনা করতে পারেন।
এসএফ

13

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

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

"আমাদের ছোট কার্যকারিতা সম্পর্কে ভুলে যাওয়া উচিত, সময়ের প্রায় 97% বলুন: অকালীন অপটিমাইজেশন সমস্ত মন্দের মূল । তবুও আমাদের সেই সমালোচনামূলক 3% তে আমাদের সুযোগগুলি সঞ্চার করা উচিত নয়। একটি ভাল প্রোগ্রামার এর দ্বারা আত্মতৃপ্তিতে আবদ্ধ হবে না যুক্তি দিয়ে, তিনি সমালোচনামূলক কোডটি মনোযোগ সহকারে দেখতে বুদ্ধিমান হবেন; তবে কেবলমাত্র সেই কোডটি চিহ্নিত হওয়ার পরে । "

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


10

যেহেতু প্রশ্নটি " কোড পড়ার পক্ষে কঠিন " বলে, সহজ উত্তরটি কখনই হয় না। কোড লেখার পক্ষে কোন অজুহাত নেই যা পড়া শক্ত। কেন? দুটি কারণ।

  1. আজ রাতে বাসায় যাওয়ার পথে বাসের ধাক্কায় কী ঘটে? বা (আরও আশাবাদী, এবং আরও সাধারণভাবে) এই প্রকল্পটি বন্ধ করে নিয়েছে এবং অন্য কোনও কিছুর কাছে পুনরায় নিয়োগ দেওয়া হয়েছে? ছোট সুবিধা আপনি আপনি কল্পনা কোডের আপনার জট জগাখিচুড়ি সম্পূর্ণভাবে সত্য যে দ্বারা outweighed সঙ্গে তৈরি করেছি অন্য কেউ এটা বুঝতে পারেন । এটি সফ্টওয়্যার প্রকল্পগুলির জন্য যে ঝুঁকি তৈরি করেছে তা ছাড়িয়ে নেওয়া শক্ত। আমি একটি বড় পিবিএক্সের সাথে একবার কাজ করেছিপ্রস্তুতকারক (আপনি যদি কোনও অফিসে কাজ করেন তবে আপনার ডেস্কে সম্ভবত তাদের একটি ফোন রয়েছে)। তাদের প্রকল্প পরিচালক আমাকে একদিন বলেছিলেন যে তাদের মূল পণ্য - মালিকানাধীন সফ্টওয়্যার যা একটি স্ট্যান্ডার্ড লিনাক্স বাক্সকে পুরোপুরি বৈশিষ্ট্যযুক্ত ফোন এক্সচেঞ্জে পরিণত করেছিল - সংস্থার অভ্যন্তরে "ব্লাব" নামে পরিচিত ছিল। কেউ এটা আর বুঝতে পারে নি। প্রতিবার তারা একটি নতুন বৈশিষ্ট্য প্রয়োগ করেছে। তারা সঙ্কলন করে তারপরে পিছনে দাঁড়াবে, চোখ বন্ধ করবে, বিশে গণনা করবে, তারপরে আঙ্গুলের মধ্য দিয়ে উঁকি দিয়ে দেখুন এটি কাজ করে কিনা। কোনও ব্যবসায়ের মূল পণ্যগুলির প্রয়োজন নেই তারা আর নিয়ন্ত্রণ করে না, তবে এটি একটি ভীতিজনকভাবে সাধারণ পরিস্থিতি।
  2. তবে আমার অপটিমাইজ করা দরকার! ঠিক আছে, সুতরাং আপনি এই প্রশ্নের অন্যান্য উত্তরে সমস্ত দুর্দান্ত পরামর্শ অনুসরণ করেছেন: আপনার কোডটি তার কার্য সম্পাদনের পরীক্ষায় ব্যর্থ হচ্ছে, আপনি এটিকে সাবধানতার সাথে প্রোফাইল করেছেন, বাধাগুলি চিহ্নিত করেছেন, একটি সমাধান নিয়ে আসছেন ... এবং এটি যাচ্ছে কিছু বিট বিড়ম্বনা জড়িত । ভাল: এখন এগিয়ে যান এবং অনুকূলিতকরণ। তবে এখানে গোপনীয়তা রয়েছে (এবং আপনি এটির জন্য বসতে চাইতে পারেন): উত্স কোডের আকারের অনুকূলকরণ এবং হ্রাস একই জিনিস নয়। মন্তব্য, সাদা স্থান, বন্ধনী এবং অর্থবহ পরিবর্তনশীল নামগুলি পাঠযোগ্যতার জন্য সমস্ত বিশাল সহায়তা যা আপনার জন্য একেবারেই কিছুই ব্যয় করে না কারণ সংকলক এগুলি ফেলে দেবে। (বা যদি আপনি জাভাস্ক্রিপ্ট মত একটি অ-কম্পাইল ভাষা লেখার - জাভাস্ক্রিপ্ট নিখুত এবং হ্যাঁ, আছে খুব বৈধ্য কারণ - তারা সঙ্গে একটি দ্বারা মোকাবিলা করা যেতে পারে সংকোচকারী ।) আবদ্ধ, অল্পস্বল্প কোডের লম্বা লাইন (এক muntoo হয়েছে মত পোস্ট এখানে ) অপ্টিমাইজেশান সঙ্গে কিছুই করার আছে: একটি প্রোগ্রামার দেখানোর জন্য কিভাবে চালাক তারা যতটা সম্ভব কয়েকটি অক্ষর মধ্যে যতটা কোড প্যাকিং দ্বারা হয় চেষ্টা করছে। এটি চালাক নয়, এটি বোকা। সত্যিকারের চালাক প্রোগ্রামার এমন একজন, যিনি তাদের ধারণাগুলি স্পষ্টভাবে অন্যের কাছে জানাতে পারেন।

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

4

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

অন্যথায় এটি একটি মিথ্যা দ্বিবিজ্ঞান - যদি আপনি মনে করেন এটি দ্রুত করার জন্য আপনার এটি কুৎসিত করা দরকার, আপনি এটি ভুল করছেন। (বা ভাল কোডটি কী সম্পর্কে আপনার নীতিগুলি সংশোধন করা দরকার got সমস্যাটির যথাযথ সমাধান হলে গোটো ব্যবহার করা বাস্তবে বেশ মার্জিত। তবে এটি খুব কমই হয়))


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

আমি একমত নই যে এটি একটি মিথ্যা দ্বিবিজ্ঞান; আইএমওতে এমন দৃশ্যপট রয়েছে যা বিশেষ করে লাইব্রেরি কোডে (অ্যাপ্লিকেশন কোডে এত বেশি নয়) যেখানে বিভাজনটি খুব আসল। আরও উত্তর জন্য আমার উত্তর দেখুন।
মার্ক গ্রাভেল

@ চিহ্ন, যদি "অন্য কোনও সক্ষম প্রোগ্রামার" সত্যিই সক্ষম হয়, তবে নিক্ষেপ কোডটি কোনও সমস্যা হওয়া উচিত নয় :)

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

@Mark, আপনার "নিক্ষেপ-দূরে কোড" এটার প্রোডাকশন তোলে, তাহলে যে না নিক্ষেপ-দূরে কোড। লক্ষ্য করুন যে আমি আমার উত্তরে সময়টি দিয়েছি তা স্পষ্ট করে বলতে যে আমি কোডের কথা বলছি যা আক্ষরিকভাবে ফেলে দেওয়া হয়: অর্থাত্ প্রথম ব্যবহারের পরে মুছুন। অন্যথায় আমি আপনার অনুভূতির সাথে একমত এবং আমার উত্তরে যতটা বলেছি।
মাকু

3

যখনই মার্কেটপ্লেসে কম পারফরম্যান্সের আনুমানিক ব্যয় প্রশ্নযুক্ত কোড মডিউলের জন্য কোড রক্ষণাবেক্ষণের আনুমানিক ব্যয়ের চেয়ে বেশি।

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


একটি ভাল ব্যবসায়ের দৃষ্টিকোণ, কখনও কখনও প্রোগ্রামারদের কেবলমাত্র প্রযুক্তিগতের বাইরে থাকা প্রয়োজন।
this.josh

3

ভুলে যাবেন না আপনি যথাযথ ডকুমেন্টেশন এবং মন্তব্য দ্বারা হার্ড-টু-পঠিত কোড বুঝতে সহজ করতে পারেন।

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


0

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

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

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

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

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

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

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