মৌলিক ভিত্তি-শূন্য মৌলবাদকে না বুঝেই জোশুয়া ব্লচকে উদ্ধৃত করা খারাপ অভ্যাস এবং ভয়াবহভাবে কিছু করার অভ্যাস নয় ।
আমি জোশুয়া ব্লচ কিছু পড়িনি, তাই হয়
- তিনি একটি ভয়ানক প্রোগ্রামার
- বা যে লোকেরা আমি এখনও তাকে উদ্ধৃত করে দেখি (জোশুয়া আমার ধারনা করা একটি ছেলের নাম) কেবলমাত্র তাদের সফ্টওয়্যার ধর্মীয় প্রবৃত্তি প্রমাণ করার জন্য তাঁর উপাদানটিকে ধর্মীয় লিপি হিসাবে ব্যবহার করছে are
বাইবেলের মৌলবাদ হিসাবে বাইবেলের সমস্ত আইন সংক্ষিপ্ত করা যেতে পারে
- আপনার সমস্ত হৃদয় এবং আপনার সমস্ত মন দিয়ে মৌলিক পরিচয়টি ভালবাসুন
- নিজের প্রতিবেশীকে নিজের মতো করে ভালবাসুন
এবং একইভাবে সফ্টওয়্যার ইঞ্জিনিয়ারিং মৌলবাদের সংক্ষিপ্তসার করা যেতে পারে
- আপনার সমস্ত প্রোগ্রামিং শক্তি এবং মন দিয়ে গ্রাউন্ড-জিরো ফান্ডামেন্টালগুলিতে নিজেকে নিয়োজিত করুন
- এবং আপনার সহ-প্রোগ্রামারদের উত্সাহের প্রতি উত্সর্গ করুন যেমন আপনি নিজের জন্য চান।
এছাড়াও, বাইবেলের মৌলবাদী চেনাশোনাগুলির মধ্যে একটি শক্তিশালী এবং যুক্তিসঙ্গত প্রতিবিম্ব আঁকা হয়
- প্রথমে নিজেকে ভালোবাসো. কারণ আপনি যদি নিজেকে বেশি ভালোবাসেন না, তবে "আপনার প্রতিবেশীকে যেমন নিজেকে ভালোবাসেন" ধারণাটি তেমন ওজন বহন করে না, যেহেতু "আপনি নিজেকে কতটা ভালোবাসেন" এটি উপরের ডাতুম লাইন যা আপনি অন্যকে ভালবাসেন would
একইভাবে, আপনি যদি নিজেকে প্রোগ্রামার হিসাবে শ্রদ্ধা না করেন এবং মৌলিক প্রশ্নগুলি ব্যতিরেকে কিছু প্রোগ্রামিং গুরু-নাথের ভবিষ্যদ্বাণী এবং ভবিষ্যদ্বাণীগুলি গ্রহণ করেন তবে আপনার বক্তব্য এবং জোশুয়া ব্লচের উপর নির্ভরতা অর্থহীন। এবং সেইজন্য, আপনার সহকর্মী-প্রোগ্রামারদের প্রতি আপনার আসলে শ্রদ্ধা নেই।
সফ্টওয়্যার প্রোগ্রামিং এর মৌলিক আইন
- অলসতা একটি ভাল প্রোগ্রামারের গুণাবলী of
- আপনি আপনার প্রোগ্রামিং লাইফকে যত সহজ, অলস এবং তাই যতটা সম্ভব কার্যকর করতে পারবেন
- আপনার প্রোগ্রামিংয়ের পরিণতি এবং প্রবেশাধিকারগুলি যতটা সহজ, অলস এবং অতএব আপনার নেগ্রবার-প্রোগ্রামারদের যারা আপনার সাথে কাজ করে এবং আপনার প্রোগ্রামিংয়ের প্রবেশদ্বারগুলি বেছে নেয় তাদের পক্ষে যতটা সম্ভব কার্যকর করা যায়।
ইন্টারফেস-প্যাটার্ন ধ্রুবক একটি খারাপ অভ্যাস ???
মৌলিকভাবে কার্যকর এবং দায়িত্বশীল প্রোগ্রামিংয়ের কোন আইনের অধীনে এই ধর্মীয় আদেশটি পড়ে?
ইন্টারফেস-প্যাটার্ন ধ্রুবকগুলিতে উইকিপিডিয়া নিবন্ধটি কেবলমাত্র পড়ুন ( https://en.wikedia.org/wiki/Constant_interface ), এবং নির্বোধ অজুহাত এটিকে ইন্টারফেস-প্যাটার্নের ধ্রুবকের বিরুদ্ধে উল্লেখ করেছে।
ওফতিফ-কোনও আইডিই নেই? সফ্টওয়্যার প্রোগ্রামার হিসাবে পৃথিবীতে কে আইডিই ব্যবহার করবে না? আমাদের মধ্যে বেশিরভাগ প্রোগ্রামার যারা আইডিই ব্যবহার এড়িয়ে গিয়ে মাচো এসেসেটিক বেঁচে থাকার পক্ষে প্রমাণ করতে চান না।
- এছাড়াও - আইডিইর প্রয়োজন না হওয়ার উপায় হিসাবে মাইক্রো-ফাংশনাল প্রোগ্রামিংয়ের দ্বিতীয় সমর্থকদের অপেক্ষা করুন। আপনি ডেটা-মডেল সাধারণকরণ সম্পর্কে আমার ব্যাখ্যাটি পড়া না হওয়া পর্যন্ত অপেক্ষা করুন।
বর্তমান ক্ষেত্রের মধ্যে ব্যবহার করা হয় না ভেরিয়েবলের সাথে নেমস্পেস দূষণ করে? এটি এই মতামতের প্রবক্তা হতে পারে
- ডেটা-মডেল নরমালাইজেশন সম্পর্কে প্রয়োজনীয়তা এবং প্রয়োজনীয়তা সম্পর্কে অবগত নয়
ধ্রুবক প্রয়োগের জন্য ইন্টারফেস ব্যবহার করা ইন্টারফেসের অপব্যবহার। এর প্রবক্তাদের একটি খারাপ অভ্যাস আছে
- "ধ্রুবকদের" অবশ্যই চুক্তি হিসাবে বিবেচনা করা উচিত নয়। এবং ইন্টারফেসগুলি কোনও চুক্তি মেনে চলার জন্য বা প্রয়োগ করার জন্য ব্যবহৃত হয়।
ভবিষ্যতে ইন্টারফেসগুলি বাস্তবায়িত শ্রেণিতে রূপান্তর করা যদি অসম্ভব না হয় তবে এটি কঠিন। হাহ .... হুমমম ... ???
- আপনি কেন আপনার অবিরাম জীবিকা হিসাবে প্রোগ্রামিংয়ের এমন প্যাটার্নে যুক্ত থাকতে চান? আইওউ, কেন এমন একটি এমবিভ্যালেন্ট এবং খারাপ প্রোগ্রামিং অভ্যাসের প্রতি নিজেকে নিয়োজিত রাখুন?
অজুহাত যাই হোক না কেন, ইন্টারফেস ধ্রুবকগুলির ব্যবহারকে প্রতিনিধিত্বমূলক বা নিরুৎসাহিত করার জন্য যদি স্বতঃস্ফূর্তভাবে কার্যকর সফ্টওয়্যার ইঞ্জিনিয়ারিংয়ের কথা আসে তখন কোনও ভ্যালিডের ব্যয় হয় না।
মার্কিন যুক্তরাষ্ট্রের সংবিধানের কারুকাজকারী প্রতিষ্ঠাতা পিতাদের মূল উদ্দেশ্য এবং মানসিক অবস্থা কী তা বিবেচনাধীন নয়। আমরা প্রতিষ্ঠাতা পিতৃগণের মূল উদ্দেশ্য সম্পর্কে বিতর্ক করতে পারি তবে আমি যে বিষয়টি যত্নশীল তা হ'ল মার্কিন সংবিধানের লিখিত বিবৃতি। এবং মার্কিন সংবিধানের অলিখিত লিখিত-উদ্দেশ্যগুলি নয়, লিখিত সাহিত্য-মৌলবাদকে কাজে লাগানো প্রতিটি মার্কিন নাগরিকের দায়িত্ব is
একইভাবে, জাভা প্ল্যাটফর্মের প্রতিষ্ঠাতা এবং প্রোগ্রামিং ভাষার ইন্টারফেসের জন্য "মূল" অভিপ্রায়গুলি কী ছিল তা আমি বিবেচনা করি না। আমি যা যত্ন করি তা হ'ল জাভা স্পেসিফিকেশন উপলব্ধ কার্যকর বৈশিষ্ট্যগুলি এবং দায়বদ্ধ সফ্টওয়্যার প্রোগ্রামিংয়ের মৌলিক আইনগুলি পূরণ করতে আমাকে সহায়তা করার জন্য আমি এই বৈশিষ্ট্যগুলি পুরোপুরি কাজে লাগাতে চাই। আমার যদি "ইন্টারফেসের উদ্দেশ্যটি লঙ্ঘন করা হয়" বলে মনে হয় তবে আমার কোনও যত্ন নেই। গোসলিং বা ব্লাচ "জাভা ব্যবহারের সঠিক উপায়" সম্পর্কে কী বলেছে সে বিষয়ে আমার কোনও খেয়াল নেই, যতক্ষণ না তারা যা বলেন তা আমার প্রয়োজনীয়তা পূরণের মৌলিকতার প্রয়োজনীয়তা লঙ্ঘন না করে।
ফান্ডামেন্টাল হ'ল ডেটা-মডেল নরমালাইজেশন
আপনার ডেটা-মডেলটি কীভাবে হোস্ট করা বা সংক্রমণ করা যায় তা বিবেচ্য নয়। আপনি যদি ইন্টারফেস বা enums বা whetvernots, রিলেশনাল বা ন-এসকিউএল ব্যবহার করেন, যদি আপনি ডেটা-মডেল সাধারণকরণের প্রয়োজনীয়তা এবং প্রক্রিয়া না বুঝতে পারেন।
আমাদের প্রথমে একটি সেট প্রক্রিয়াগুলির ডেটা-মডেলটি সংজ্ঞায়িত করতে এবং স্বাভাবিক করতে হবে। এবং যখন আমাদের একটি সুসংগত ডেটা-মডেল থাকে কেবল তখনই আমরা এর উপাদানগুলির প্রক্রিয়া প্রবাহকে কার্যকরী আচরণের সংজ্ঞা দিতে পারি এবং প্রক্রিয়াটিকে অ্যাপ্লিকেশনের ক্ষেত্র বা ক্ষেত্র বাধা দেয়। এবং কেবলমাত্র তখনই আমরা প্রতিটি কার্যকরী প্রক্রিয়ার এপিআই সংজ্ঞায়িত করতে পারি।
এমনকি ইএফ কোডড প্রস্তাবিত ডেটা সাধারণকরণের দিকগুলি এখন মারাত্মকভাবে চ্যালেঞ্জযুক্ত এবং কঠোরভাবে চ্যালেঞ্জপ্রাপ্ত। উদাহরণস্বরূপ, 1 এনএফ-এ তাঁর বক্তব্যকে অস্পষ্ট, বিভ্রান্তিকর এবং অতি-সরলকরণ হিসাবে সমালোচিত করা হয়েছে, যেমনটি তাঁর বাকী বাক্যগুলি বিশেষত আধুনিক ডেটা সার্ভিসেস, রেপো-প্রযুক্তি এবং সংক্রমণের আবিষ্কারে। আইএমও, ইএফ কোডড বিবৃতি সম্পূর্ণরূপে খালি করা উচিত এবং আরও গাণিতিকভাবে প্রশ্রয়যোগ্য বিবৃতিগুলির নতুন সেট নকশা করা উচিত।
ইএফ কোডডের এক বিস্ময়কর ত্রুটি এবং কার্যকর মানবিক বোধগম্যতার জন্য এর বিভ্রান্তির কারণ হ'ল তাঁর বিশ্বাস হ'ল মানবিকভাবে উপলব্ধিযোগ্য বহু-মাত্রিক, পরিবর্তনীয়-মাত্রিক ডেটা দক্ষতার সাথে উপলব্ধভাবে চিহ্নিত করা যেতে পারে টুকরাযুক্ত 2-মাত্রিক ম্যাপিংয়ের একটি সেট।
ডেটা নরমালাইজেশনের ফান্ডামেন্টালস
ইএফ কোডড যা প্রকাশ করতে ব্যর্থ হয়েছিল।
প্রতিটি সুসংগত ডেটা-মডেলের মধ্যে, এটি হ'ল ডেটা-মডেল সংহতি অর্জনের ক্রমিক স্নাতক ক্রম।
- ডেটা উদাহরণগুলির ityক্য এবং পরিচয়।
- প্রতিটি ডেটা উপাদানগুলির গ্রানুলারিটি ডিজাইন করুন, যার মাধ্যমে তাদের গ্রানুলারিটি এমন স্তরে যেখানে কোনও উপাদানগুলির প্রতিটি উদাহরণ স্বতন্ত্ররূপে সনাক্ত এবং পুনরুদ্ধার করা যায়।
- উদাহরণ অ্যালিজিং অনুপস্থিতি। উদাহরণস্বরূপ, কোনও উপায় বিদ্যমান নেই যার মাধ্যমে একটি সনাক্তকরণ কোনও উপাদানটির একাধিক উদাহরণ উপস্থাপন করে।
- উদাহরণ ক্রসস্টালকের অনুপস্থিতি। কোনও উপাদানটির উদাহরণ সনাক্তকরণে অবদান রাখার জন্য কোনও উপাদানটির এক বা একাধিক উদাহরণ ব্যবহার করার প্রয়োজনীয়তা নেই।
- ডেটা উপাদান / মাত্রার একতা এবং পরিচয়।
- উপাদান ডি-এলিয়াসিংয়ের উপস্থিতি। একটি সংজ্ঞা বিদ্যমান থাকতে হবে যার মাধ্যমে কোনও উপাদান / মাত্রা অনন্যভাবে চিহ্নিত করা যায়। কোন উপাদানটির প্রাথমিক সংজ্ঞা;
- যেখানে প্রাথমিক সংজ্ঞার ফলে সাব-ডাইমেনশন বা সদস্য-উপাদানগুলি উদ্দিষ্ট উপাদানগুলির অংশ নয় তা প্রকাশের ফলাফল হবে না;
- উপাদান বিলোপ করার অনন্য উপায়। একটি উপাদান এবং একটি মাত্র অবশ্যই এই উপাদানটির জন্য ডি-আলিয়াজিং সংজ্ঞা থাকা উচিত।
- উপাদানগুলির ক্রমবর্ধমান সম্পর্কের ক্ষেত্রে পিতা বা মাতা উপাদান সনাক্ত করার জন্য একটি, এবং কেবল একটি, সংজ্ঞা ইন্টারফেস বা চুক্তি বিদ্যমান।
- উপাদান ক্রসস্টালকের অনুপস্থিতি। কোন উপাদানটির নির্দিষ্ট সনাক্তকরণে অবদান রাখতে অন্য উপাদানটির সদস্য ব্যবহার করার প্রয়োজনীয়তা নেই।
- এই জাতীয় পিতা-মাতার সন্তানের সম্পর্কের ক্ষেত্রে পিতামাতার সনাক্তকরণ সংজ্ঞাটি কোনও সন্তানের সদস্য উপাদানগুলির সেটগুলির উপর নির্ভর করে না। পিতামাতার পরিচয়ের একটি সদস্য উপাদান সন্তানের কোনও বা সমস্ত সন্তানের রেফারেন্স ছাড়াই সম্পূর্ণ শিশু পরিচয় হতে হবে।
- একটি ডেটা-মডেলের উপস্থিতি দ্বি-মডেল বা মাল্টি-মডেল উপস্থিতি।
- যখন কোনও উপাদানটির দুটি প্রার্থীর সংজ্ঞা উপস্থিত থাকে, তখন এটি স্পষ্ট লক্ষণ যে দুটি পৃথক ডেটা-মডেল এক হিসাবে মিশ্রিত রয়েছে exists এর অর্থ ডেটা-মডেল স্তরের বা মাঠের স্তরে অসঙ্গতি রয়েছে।
- অ্যাপ্লিকেশনগুলির একটি ক্ষেত্র অবশ্যই এককভাবে এবং কেবলমাত্র একটি ডেটা-মডেল ব্যবহার করতে পারে।
- উপাদান রূপান্তর সনাক্ত করুন এবং সনাক্ত করুন। যদি আপনি বিশাল ডেটা সম্পর্কিত পরিসংখ্যানগত উপাদান বিশ্লেষণ না করেন তবে আপনি সম্ভবত উপাদান সংযোজনকে দেখতে বা চিকিত্সা করার প্রয়োজনটি দেখতে পাচ্ছেন না।
- একটি ডেটা-মডেলটির কিছু উপাদান ঘূর্ণায়মান বা ধীরে ধীরে পরিবর্তিত হতে পারে।
- মোডটি সদস্য-আবর্তন বা স্থানান্তর-ঘূর্ণন হতে পারে।
- সদস্য-ঘূর্ণন পরিব্যক্তি উপাদানগুলির মধ্যে শিশুদের উপাদানগুলির স্বতন্ত্র স্ব্যাপিং হতে পারে। অথবা যেখানে সম্পূর্ণ নতুন উপাদানগুলি সংজ্ঞায়িত করতে হবে।
- স্থানান্তরিত রূপান্তর ত্রিপরিবর্তনীয় একটি গুণে রূপান্তরকারী একটি মাত্রিক সদস্য হিসাবে প্রকাশিত হবে।
- প্রতিটি মিউটেশন চক্র অবশ্যই একটি স্বতন্ত্র ডেটা-মডেল হিসাবে চিহ্নিত করা উচিত।
- প্রতিটি রূপান্তর সংস্করণ। আপনি ডেটা মডেলের পূর্ববর্তী সংস্করণটি টেনে আনতে পারেন, যখন সম্ভবত প্রয়োজন হতে পারে কোনও 8 বছরের পুরানো রূপান্তরটি ডেটা মডেলের চিকিত্সা করার জন্য।
আন্ত-সার্ভিসিং উপাদান-অ্যাপ্লিকেশনগুলির একটি ক্ষেত্র বা গ্রিডে অবশ্যই একটি এবং কেবল একটি সুসংগত ডেটা-মডেল থাকতে হবে বা নিজেকে সনাক্ত করার জন্য কোনও ডেটা-মডেল / সংস্করণের কোনও উপায় থাকতে পারে।
আমরা কি এখনও জিজ্ঞাসা করছি যে আমরা ইন্টারফেস কনস্ট্যান্ট ব্যবহার করতে পারি? সত্যি?
এই জাগতিক প্রশ্নের চেয়ে ডেটা-নরমালাইজেশন সমস্যাগুলি আরও ঝুঁকির মধ্যে রয়েছে। যদি আপনি এই সমস্যাগুলি সমাধান না করেন, তবে আপনার মনে হয় যে বিভ্রান্তি ইন্টারফেসের ধ্রুবকের কারণ হিসাবে তুলনামূলকভাবে কিছুই নয়। Zilch।
ডেটা-মডেল নরমালাইজেশন থেকে তারপরে আপনি উপাদানগুলি ভেরিয়েবল হিসাবে, বৈশিষ্ট্য হিসাবে, চুক্তি ইন্টারফেসের ধ্রুবক হিসাবে নির্ধারণ করুন।
তারপরে আপনি নির্ধারণ করুন কোনটি মান ইনজেকশন, সম্পত্তি কনফিগারেশন স্থানধারক, ইন্টারফেস, চূড়ান্ত স্ট্রিং ইত্যাদি into
ইন্টারফেস ধ্রুবকগুলির বিরুদ্ধে ডিক্টেন্ট করার জন্য কোনও উপাদান সহজে সনাক্ত করতে প্রয়োজনীয় অজুহাতটি যদি ব্যবহার করতে হয় তবে এর অর্থ আপনি ডেটা-মডেল স্বাভাবিককরণ অনুশীলন না করার খারাপ অভ্যাসে রয়েছেন।
সম্ভবত আপনি একটি ভিসি রিলিজে ডেটা-মডেলটি সংকলন করতে চান। যে আপনি কোনও ডেটা-মডেলের স্বতন্ত্র সনাক্তকরণযোগ্য সংস্করণটি বের করতে পারেন।
ইন্টারফেসে সংজ্ঞায়িত মানগুলি সম্পূর্ণরূপে অ-পরিবর্তনীয় হওয়ার নিশ্চয়তা দেয়। এবং শেয়ারযোগ্য। আপনার ক্লাসেন্টের চূড়ান্ত স্ট্রিংগুলির যখন অন্য শ্রেণি থেকে আপনার ক্লাসে চূড়ান্ত স্ট্রিংগুলির সেট কেন লোড করবেন ??
সুতরাং কেন এটি একটি ডেটা-মডেল চুক্তি প্রকাশ করার জন্য নয়? আমি বোঝাতে চাইছি যদি আপনি এটি সুসংহতভাবে পরিচালনা করতে এবং স্বাভাবিক করতে পারেন তবে কেন নয়? ...
public interface CustomerService {
public interface Label{
char AssignmentCharacter = ':';
public interface Address{
String Street = "Street";
String Unit= "Unit/Suite";
String Municipal = "City";
String County = "County";
String Provincial = "State";
String PostalCode = "Zip"
}
public interface Person {
public interface NameParts{
String Given = "First/Given name"
String Auxiliary = "Middle initial"
String Family = "Last name"
}
}
}
}
এখন আমি আমার অ্যাপগুলির চুক্তিবদ্ধ লেবেলগুলিকে এমনভাবে উল্লেখ করতে পারি
CustomerService.Label.Address.Street
CustomerService.Label.Person.NameParts.Family
এই জার ফাইলের বিষয়বস্তু গুলিয়ে দেয়? জাভা প্রোগ্রামার হিসাবে আমি জারের কাঠামো সম্পর্কে চিন্তা করি না।
এটি অসগি-প্রেরণা রানটাইম অদলবদল করতে জটিলতা উপস্থাপন করে? প্রোগ্রামারদের তাদের খারাপ অভ্যাস চালিয়ে যাওয়ার অনুমতি দেওয়ার জন্য ওসগি একটি অত্যন্ত দক্ষ উপায়। ওসির চেয়ে আরও ভাল বিকল্প রয়েছে।
বা কেন এই না? প্রকাশিত চুক্তিতে বেসরকারী কনস্ট্যান্টদের কোনও ফুটো নেই। সমস্ত প্রাইভেট কনস্ট্যান্টকে "কনস্ট্যান্টস" নামের একটি ব্যক্তিগত ইন্টারফেসে গোষ্ঠী করা উচিত, কারণ আমি ধ্রুবকগুলির সন্ধান করতে চাই না এবং বারবার "ব্যক্তিগত চূড়ান্ত স্ট্রিং" টাইপ করতে আমি খুব অলস।
public class PurchaseRequest {
private interface Constants{
String INTERESTINGName = "Interesting Name";
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
সম্ভবত এটি:
public interface PurchaseOrderConstants {
public interface Properties{
default String InterestingName(){
return something();
}
String OFFICIALLanguage = "Official Language"
int MAXNames = 9;
}
}
ইন্টারফেস বাস্তবায়িত হলে ইন্টারফেস ধ্রুবকগুলির একমাত্র ইস্যুটি হ'ল।
এটি ইন্টারফেসের "মূল অভিপ্রায়" নয়? সুপ্রিম কোর্ট মার্কিন সংবিধানের লিখিত চিঠিগুলিকে কীভাবে ব্যাখ্যা করবে তার চেয়ে আমি মার্কিন সংবিধানের কারুকাজ করার ক্ষেত্রে প্রতিষ্ঠাতা পিতাদের "মূল উদ্দেশ্য" সম্পর্কে চিন্তা করব ???
সর্বোপরি, আমি মুক্ত দেশে, বন্য এবং সাহসীদের বাড়িতে থাকি। সাহসী হোন, মুক্ত থাকুন, বন্য থাকুন - ইন্টারফেসটি ব্যবহার করুন। যদি আমার সহ-প্রোগ্রামাররা প্রোগ্রামিংয়ের দক্ষ এবং অলস উপায়গুলি ব্যবহার করতে অস্বীকার করে, তবে আমি কি আমার প্রোগ্রামিং দক্ষতাটি তাদের সাথে সামঞ্জস্য করতে কমিয়ে দেওয়ার জন্য সোনার নিয়ম দ্বারা বাধ্য? সম্ভবত আমার উচিত, তবে এটি আদর্শ পরিস্থিতি নয়।