আমার প্রথম শ্রেণির পাঠাগারটি পাঠানো হচ্ছে। আমার সম্পর্কে কোনও সচেতন হওয়া দরকার?


12

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

আমি যেখানে আছি এখানে:

  • গ্রন্থাগারটি ইউনিট পরীক্ষিত এবং প্রায় 97% কোড কভারেজ রয়েছে
  • এপিআই ভাল নথিভুক্ত এবং ইন্টেলিসেন্স সহায়তার জন্য এক্সএমএল ডক্স তৈরি করা হয়েছে
  • আমি নিশ্চিত করেছি যে পাবলিক / প্রাইভেট ক্লাস অ্যাক্সেসরগুলি সঠিক এবং সঠিক are সমস্ত getters / setters জন্য একই হয়
  • ত্রুটি সামলানো ততটা মনোমুগ্ধকর নয় যেমনটি আমি এটির মতো হতে চাই, তবে আমি একটি সময়সীমার বিরুদ্ধে এসেছি এবং গ্রহণ করেছি যে এটি আপাতত "এটি যতটা ভাল হবে"
  • বন্ধুত্বপূর্ণ লগিং নেই। ডিবাগ.উইটলাইনটি ব্যাপকভাবে ব্যবহৃত হয়েছিল ... আমি সম্প্রতি শিখেছি যে এটি আমার অভিজ্ঞতার প্রতিচ্ছবি :(

আপনার পরামর্শ ব্যাপকভাবে প্রশংসা করা হয়!

গ্রন্থাগারটি প্রতিবেদন তৈরি করতে ব্যবহৃত হবে। স্ট্যান্ডার্ড টুপি - পঠনযোগ্য ডাটাবেসের সাথে সংযুক্ত, প্রতিক্রিয়া প্রবাহে ক্যালক, ফর্ম্যাট এবং আউটপুট ডেটা করে।


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


2
বিবরণ প্রয়োজন, মুক্তি কিভাবে? বিক্রয়ের জন্য মুক্তি? ভাগ করে নেওয়ার জন্য মুক্ত উত্স প্রকাশ করবেন? আপনি যে চুক্তিটি করছেন তাতে প্রতি ক্লায়েন্টকে মুক্তি দিচ্ছেন? আপনার পুরো-সময়ের নিয়োগকর্তার কোনও প্রকল্পের অংশ হিসাবে আপনার বাকী উন্নয়ন সংস্থাকে মুক্তি দিচ্ছেন? আপনার ফুলটাইম নিয়োগকর্তার জন্য ক্লায়েন্টের প্রাপ্যতায় নতুন পণ্যটির ভি 1.0 হিসাবে প্রকাশ করছেন?
জিমি হোফা

@ জিমিহোফা: আপনার প্রশ্নের উত্তর যুক্ত হয়েছে। এইচটিই সময় দেওয়ার জন্য ধন্যবাদ!
মিঃ জাভাস্ক্রিপ্ট

1
আপনি লাইব্রেরির একজন ব্যবহারকারী এটি কীভাবে কাজ করে তার কোনও জ্ঞান ছাড়াই ভান করুন। কিছু তৈরি করতে এটি ব্যবহার করুন। অভিজ্ঞতার ভিত্তিতে জিনিসগুলি পরিবর্তন / অপসারণ / যুক্ত করুন। তারপরে এটি বাস্তব ব্যবহারকারীদের কাছে ছেড়ে দিন এবং তাদের প্রতিক্রিয়া পান।
মাইকে 30

অফলাইনে (ইশ) রেফারেন্স উপাদান থাকতে স্যান্ডক্যাসল বা অন্যান্য ডক জেনারেটর লাইব্রেরি ব্যবহার করতে পারেন?
জেসি সি স্লিকার

7
আরাম করুন। এমনকি একটি একক ইউনিট পরীক্ষা এবং এপিআই ডকুমেন্টেশনের একটি একক লাইন ইতিমধ্যে আমার অভিজ্ঞতাতে এই রিলিজটিকে "কোম্পানির অন্যান্য প্রোগ্রামারদের ব্যবহারের জন্য প্রকাশিত" কোডের 95% ডলার উপরে উন্নীত করে।
কারসন 000৩০০০

উত্তর:


8

এপিআই-এ লক-ইন করুন

কার্যকরভাবে একটি এপিআই তৈরির শিল্প প্রত্যাশা পরিচালনা সম্পর্কে যতটা কাঠামোগুলি তেমনই।

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

যদি আপনি শঙ্কিত হন যে কোডটি প্রাইম-টাইমের জন্য পুরোপুরি প্রস্তুত না হতে পারে তবে আপনি সর্বদা শুরুতে এটি বিটা হিসাবে প্রকাশ করতে পারেন।

নিহত:

  • বিটা (উদাহরণস্বরূপ 1.0)

    • একাধিক এপিআই ব্রেকিং পরিবর্তন থাকতে পারে
    • সংস্করণগুলির মধ্যে পিছনে-সামঞ্জস্যতার পরিবর্তনের অভাব থাকতে পারে
    • পোলিশের অভাব থাকতে পারে
  • অফিসিয়াল (1.0+)

    • পরবর্তী বড় প্রকাশ পর্যন্ত API এ লক করা আছে in
    • যে কোনও পরিবর্তন প্রবর্তিত হয়েছে তা পশ্চাতে সামঞ্জস্যের গ্যারান্টিযুক্ত হওয়া উচিত
  • অপ্রাপ্তবয়স্ক (প্রাক্তন 1.1)

    • বাগ-ফিক্স এবং-বা বৈশিষ্ট্য বাস্তবায়ন রয়েছে
    • সংযোজন করতে পারে তবে সংজ্ঞায়িত API থেকে সরিয়ে নিতে পারে না

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

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

এটি কীভাবে ব্যবহৃত হবে সে সম্পর্কে আপনার অনুমানগুলি ভুল

কোনও জিনিস কতটা ভালভাবে ডিজাইন করা হয়েছে তা বিবেচনা না করেই লোকেরা অপব্যবহারের জন্য বা বিকল্প ব্যবহার তৈরির উপায় খুঁজে পাবে।

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

আপনার কোডটি কীভাবে 'নিখুঁত' হতে পারে তা আপনার বিবেচ্য বিষয় নয়, আপনার ব্যবহারকারীরা প্রমাণ করবেন যে এটি তা নয়।

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

আপনার ক্ষেত্রে আপনি স্ক্র্যাচ থেকে যুদ্ধ-কঠোর হচ্ছেন যাতে আপনিও শুরু করতে পারেন।


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

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

তা ছাড়া, আমি কোডটি খুঁজে বের করতে এবং ব্যবহার করার চেষ্টা করব। এমনকি যদি সংখ্যক ব্যবহারকারী দ্বারা শুরু করা যায়।


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

4

এই দুটি জিনিস যা আমি পেয়েছি তা সফ্টওয়্যার প্রকাশের মূল বিষয়:

  • আপনি কি প্রকাশ করেছেন ঠিক তা জেনে নিন
  • প্রত্যাশা পরিচালনা করুন

আপনি কী ফিরেছেন তা ফিরে যেতে এবং বাগ ফিক্স করতে সক্ষম হতে চান এবং আপনার কোড কোন সমস্যার সমাধান করবে তা লোকেদের বুঝতে হবে।

আপনি কি মুক্তি দিয়েছেন তা জেনে

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

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

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

প্রত্যাশা পরিচালনা

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

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

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


0

মোতায়েনের জন্য আমার কাছে একটি চেকলিস্ট রয়েছে যা আপনি দরকারী মনে করতে পারেন। আমি ডেস্কটপ বিকাশ করি তবে এর কয়েকটি অনুবাদ করা উচিত। এর কয়েকটি এখানে:

সাধারণ:

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

নেট নির্দিষ্ট:

  • নিশ্চিত করুন যে আমি ডিসপোজযোগ্য বস্তুগুলিতে ডিসপোজ () কল করছি। আমি এর কেসগুলি খুঁজতে সহায়তা করতে কোড বিশ্লেষণ বা এফএক্সকপ ব্যবহার করি।
  • নিশ্চিত হয়ে নিন যে আমি সমস্ত ইভেন্ট হ্যান্ডলারগুলিকে সঠিকভাবে আনচুক করছি। এটি স্মৃতি ফুটো রোধ করে।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.