কীভাবে লোকেরা অত্যন্ত জটিল এবং কঠিন কোড পড়তে এবং রক্ষণ করতে পরিচালনা করে? [বন্ধ]


27

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

কীভাবে লোকেরা এইরকম চরম জটিল এবং জটিল কোড পড়তে এবং পরিচালনা করতে পরিচালনা করে?


1
আমার মনে হয়, এগুলি তারা করেন না :-D
পাওকা

2
@ পাওকা: যেখানে "তারা" এসকিউএলাইট লোকদের অন্তর্ভুক্ত করে না।
ফ্রাঙ্ক শায়ারার

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

1
কেউ কি কখনও এমন বিশাল প্রকল্প দেখেছেন যা পড়া সহজ ছিল?
জেফ ডেভিস

2
ইন্টার্ন, পোস্টডকস ইত্যাদির ভাড়া নেওয়া এবং তাদের এটি করার জন্য
করিয়ে দিন

উত্তর:


19

জটিল এবং জটিল মধ্যে একটি বড় পার্থক্য আছে। নীচের লিঙ্কটি এটির যোগফল দেয়। :)

http://codebetter.com/blogs/dru.sellers/archive/2009/09/25/complex-vs-complicated.aspx

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

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

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


31

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

http://sqlite.org/testing.html

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

সম্পাদনা: এই প্রশ্নটি মৃতদের থেকে উত্থাপিত হয়েছে, মনে হয়! এবং এক বছরেরও বেশি পরে, একই পৃষ্ঠায় প্রতিবেদন করা হয়েছে যে তারা উত্পাদন হিসাবে টেস্টিং কোডের অনেক লাইন থেকে 1177 গুণ বেশি!


2
আর কেউই কিন্তু আমাকে একটা হিসাবে এই সূচিত সমস্যা বদলে গর্ব বিন্দু ?
স্টিফেন

1
আসলেই আমি ধরে নেই ডেটাবেস সবার আগে নির্ভরযোগ্য হতে হবে।
ts01

5
@ স্টিফেন, কেন অনেক পরীক্ষার ক্ষেত্রে সমস্যা হবে ?

1
সময়ের কোমর? অনেক পরীক্ষা ছোট পরীক্ষার মতোই খারাপ (আইএমএইচও)
ডেইনিয়াস

9
কোডটি ব্যর্থ হতে পারে এমন কোনও সম্ভাব্য কেসটি যদি coversেকে রাখে তবে কোনও পরীক্ষা কীভাবে সময় নষ্ট হতে পারে?
রামহাউন্ড

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

4

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

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

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

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

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


সুনির্দিষ্ট পরিবর্তন করুন, এবং এটি আমার বর্তমান কাজের মতো মনে হচ্ছে! এই উত্তরের সর্বোত্তম অংশ হ'ল বিশেষত্ব এবং সময়ের সাথে সাথে বিকাশ হওয়া need পুরো বিষয়টি সম্পর্কে এক চিমটি হাস্যরস যুক্ত করুন।
DarenW

4

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

আমার উপদেশ:

  • আপনি প্রকল্পটির ভাষা বুঝতে নিশ্চিত হন। এটি ভাষা জানা যথেষ্ট নয়।
  • কোডে হাত দেওয়ার আগে ডোমেন সম্পর্কে প্রতিটি বিশদ জানুন।

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


3

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


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

3

কীভাবে লোকেরা এইরকম চরম জটিল এবং জটিল কোড পড়তে এবং পরিচালনা করতে পরিচালনা করে?

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

যে কোনও কোড এটি বুঝতে সময় নেয়। এটি ঠিক যে কিছু অন্যদের চেয়ে বেশি সময় নেয় :)


2

অধ্যবসায়, ধৈর্য এবং একটি পদ্ধতিগত পদ্ধতির - তবে প্রধানত অধ্যবসায় :-) যদি আপনি কোনও কোড-বেসকে ঘিরে আপনার মাথাটি গুটিয়ে রাখতে পারেন-


1

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


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

1

তারা এটিকে সহজ উপায়ে নয় বরং সরলভাবে লেখার চেষ্টা করেছেন।

আপনার যতটুকু সহজ সরল জিনিসগুলি বুঝতে / পড়তে আরও দ্রুত করে তোলে, এমনকি এতে কিছুটা সময় নিতে পারে।


1

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

অন্য কথায়, আমি মাঝে মাঝে অনির্বচনীয় কোড লেখার একটি কারণ হ'ল, আমি প্রয়োগ করতে চাইছি সেই অ্যালগরিদম দেওয়া থাকলে আমার কোনও বিকল্প নেই।

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