ইউজার ইন্টারফেস ক্লাসগুলি কমান্ড লাইন ইন্টারফেস দ্বারা প্রতিস্থাপন করা যেতে পারে এমন ভেবে কোনও আর্কিটেকচার ডিজাইন করা কি ভাল ধারণা?


92

কোড সম্পূর্ণ পৃষ্ঠা 25 তে বলা হয়েছে যে কমান্ড লাইনের মাধ্যমে নিয়মিত ইউজার ইন্টারফেস ক্লাস সহজেই প্রতিস্থাপন করতে সক্ষম হওয়াই ভাল ধারণা।

পরীক্ষার জন্য এর সুবিধাগুলি জানা, এটি নিয়ে আসতে পারে এমন সমস্যাগুলির সম্পর্কে কী?

এই অতিরিক্ত কাজটি কি সত্যিই ওয়েব এবং মোবাইল প্রকল্পগুলির জন্য অর্থ প্রদান করবে? ক্ষুদ্র ও মাঝারি প্রকল্পগুলির কী; একই বিধি প্রযোজ্য? যদি এটি আপনার নকশাটিকে আরও জটিল করে তোলে?


2
পার্লে মোসএক্স :: গেটোপ্ট এবং প্ল্যাক :: হ্যান্ডলার :: সি এল আই এর মতো সরঞ্জামগুলি কেবল এটি ।
ইথার

4
আপনি যদি প্রথমে কোনও সিএলআই দিয়ে আপনার প্রোগ্রামটি তৈরি করেন তবে প্রোগ্রামটিতে গভীরভাবে এম্বেড থাকা ইউআই এর চেয়ে অনেক বেশি নমনীয়তা দিয়ে UI এর উপরে স্তরযুক্ত করা যেতে পারে। ওয়েব সার্ভিসের ক্ষেত্রে এটি অনেকটাই একই।
zzzzBov

28
সর্বদা একটি শক্ত শব্দ।
চিহ্নিত ক্যানলাস

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

2
@ ভ্যান্ডেল আমার কাছে কোড সম্পূর্ণের দ্বিতীয় সংস্করণ রয়েছে এবং এটি 25 পৃষ্ঠায় উল্লেখ করা হয়নি Which আপনি কোন সংস্করণটির কথা উল্লেখ করছেন?
JW01

উত্তর:


43

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

এটিতে কয়েকটি ঘাটতি রয়েছে যা ওজন করা দরকার:

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

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


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

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

110

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

আসলে এটি করার উপযুক্ত কিনা বা না তা পুরোপুরি নির্ভর করে যে আপনার প্রচুর ব্যবহারকারী আপনার প্রোগ্রামটি স্বয়ংক্রিয় করতে চান কিনা to


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

আর একটি সুবিধা আবিষ্কারযোগ্যতা হতে পারে। সাব্লাইম পাঠ্যের Ctrl-Shift-P বৈশিষ্ট্য এটির দুর্দান্ত উদাহরণ। মেনুগুলি অনুসন্ধান করার চেয়ে আমি যদি কিছু অস্পষ্ট কার্যকারিতা চাই তবে আমি কেবল এটি টাইপ করব যা বলা হবে এবং আমি কমান্ডটি (এবং শর্টকাট) দেখতে পাচ্ছি এবং তা অবিলম্বে কার্যকর করতে সক্ষম হয়েছি।
অ্যাডাম ইলি

ওপেনডিজে, ওপেন সোর্স, জাভা ভিত্তিক এলডিএপি সার্ভার এর দুর্দান্ত উদাহরণ: আপনি জিইউআইতে প্রতিটি পরিবর্তন করার কমান্ড লাইনটি কনফার্ম ডায়ালগ বক্সে উপলভ্য।
ফ্রাঙ্ক

1
@ মার্নিক্স.ভিআর .: অঙ্গভঙ্গিগুলি কেবলমাত্র এমন কোনও ক্রিয়া সম্পাদনের সহজ উপায় যা একটি আদেশ দ্বারা নির্দিষ্ট করা যেতে পারে, যেমন '35.73N 118.23W' তে জুম ইন করুন '। কোনও অঙ্কন হ'ল কমান্ড হিসাবে ইনপুট হতে পারে, যদিও এটি অসুবিধে হবে। তবুও আমি মনে করি একটি সুবিধাজনক স্ক্রিপ্টযোগ্য ইন্টারফেসে দুর্দান্ত উপযোগিতা রয়েছে এবং এটি তৈরি করতে খুব কম শ্রম প্রয়োজন।
কেভিন ক্লাইনে

7
+1: আরেকটি মূল সুবিধা হ'ল এটি ব্যবহারকারীর ক্রিয়াগুলি লগ করা সহজ করে তোলে, উত্পাদন সমস্যার পুনরুত্পাদনকে সহজ করে তোলে।
কেভিন cline

81

এটি অতিরিক্ত কাজ নয়, কেবল ভিন্ন কাজ। আপনি যদি এটি সঠিকভাবে করেন তবে এটি কেবল এটিকে আরও জটিল করে তুলবে না, এটি এটিকে আরও সহজ করে তুলবে কারণ এটি আপনাকে আপনার নকশা ডিক্লুপ করতে বাধ্য করবে। আপনি প্রকৃতপক্ষে সিএলআই বাস্তবায়ন করুক বা না করুক না কেন এটি সম্ভব করার জন্য আপনার নকশাটি আরও ভাল।


4
বেশ কয়েকটি সম্পূর্ণ ভুল বিবৃতি জন্য -1। অবশ্যই এটি আরও জটিল করে তুলবে। এটি সর্বোপরি একটি অতিরিক্ত প্রয়োজনীয়তা / বৈশিষ্ট্য।
বোরিস ইয়াঙ্কভ

@ বরিসইঙ্কভ আমার মনে হয় তার অর্থ "জটিল" পরিবর্তে "জটিল" ছিল - এগুলি একই রকম মনে হয় এবং অর্থের সাথে ওভারল্যাপ হয়, তাই তারা উপলক্ষে বিভ্রান্ত করা সহজ
ইজকাটা

43

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

তা ছাড়া টেস্টগুলি স্বয়ংক্রিয় করতে সক্ষম হওয়াই একটি মূল সুবিধা।


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

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

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

2
@ ক্লিকউপভোট একটি পরিমাণে এটি নির্ভর করে যে আপনি কীভাবে আপনার জিইউআই বাস্তবায়ন করেন। একটি সত্যই পাতলা জিইউআই যা কেবল একটি সমর্থন শ্রেণিতে ভ্যালু চ্যাঞ্জড বার্তাগুলি প্রেরণ করে এবং প্রতিক্রিয়ায় ভ্যালুভালিড / ভ্যালুআইনাল্ড বার্তাগুলি গ্রহণ করে এটি অনটেক্সটবক্সচ্যাঞ্জড ইভেন্টগুলিতে সমস্ত বৈধতা যা করে তা পরিবর্তন করা খুব সহজ হবে।
ড্যান নীলি

@ ক্লিকউপভোটটি আমি বেশ সম্মত, সে কারণেই আমি আমার নিরবচ্ছিন্ন যে জিনিসটি পছন্দ করি তার প্রতি দৃষ্টি নিবদ্ধ করতে বা আমার সম্পূর্ণ মনোযোগকে ঘৃণিত জিনিসটি উপহার দিতে সক্ষম হতে চাই, তাই যত তাড়াতাড়ি সম্ভব আমি এটিকে সম্পন্ন করতে পারি।
ডিফোর্ড

17

হ্যাঁ এটি প্রায় সর্বদা একটি ভাল ধারণা।

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


2
আপনি যদি যেমন একটি টেক্সট এডিটর লিখছেন তবে এর সুবিধা কী হবে?
নিকি

5
@ নিকি কারণ, উদাহরণস্বরূপ, আপনি আপনার ডাব্লুওয়াইসিআইজিআইজি টেক্সট এডিটর ভিউটিকে একটি সরল পাঠ্য বা মার্কআপ ভিত্তিক ফ্রন্ট-এন্ডের সাথে প্রতিস্থাপন করতে পারেন এবং যতক্ষণ না এটি একই তথ্য অন্তর্নিহিত মডেলটিতে পৌঁছে দেয় ততক্ষণ আপনার বিদ্যমান অবকাঠামো কাজ চালিয়ে যাবে।
12:36

5

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


5

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

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

সুতরাং ফ্যাক্টর যে পরীক্ষাগুলি তৈরি করার সময়।


3

না। ভয়ঙ্কর পরামর্শ।

এটি কিছুটা যজ্ঞী (আপনার এটি প্রয়োজন হবে না)।

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

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

এটি আপনাকে স্ক্রিপ্টিং বাস্তবায়নে সহায়তা করবে না। এটি আসলে সেই দিকে যে কোনও অগ্রগতি বাধাগ্রস্থ করবে।

কেবলমাত্র ইতিবাচক জিনিসটি এটি 25 পৃষ্ঠায় প্রদর্শিত হয়েছিল, তাই কমপক্ষে আপনি একটি সতর্কতা পেয়ে গেছেন যে বইয়ের বাকী অংশগুলি হ'ল ... দুর্গন্ধযুক্ত। আমি এটি অনেক আগে পড়েছি এবং এটি পছন্দ করে না, তাই আমি পক্ষপাতদুষ্ট।


1
+100000000 একমত

4
স্ক্রিপ্টযোগ্য এমস্পেন্ট সত্যিই সত্যিই দরকারী।
রাউন্ডটওয়ার

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

পিএসপেইন্ট + কমান্ড লাইন ইন্টারফেস = অটোক্যাড
ভোরাক

-1 (যদি আমি পারতাম) নোট করুন যে এটি "একটি সিএমআই পাশাপাশি একটি জিইউআই বাস্তবায়ন" বলে না; এটিতে বলা হয়েছে, "বিকল্প ইউআই বাস্তবায়নের জন্য সিএলআইয়ের মতো কাজ করুন"।
মার্ক হার্ট

2

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

এটি পরীক্ষায় বিশেষভাবে কার্যকর।

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

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

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

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

এমন অনেক পরিস্থিতিতে আছে যেখানে একটি কমান্ড-লাইন ইন্টারফেস ব্যবহার করতে পারে। এই মাত্র কিছু উদাহরণ।


1

বাক্যাংশটি আবার খেয়াল করুন: "[এটি '] একটি কমান্ড লাইনের মাধ্যমে নিয়মিত ইউজার ইন্টারফেস ক্লাস সহজেই প্রতিস্থাপন করতে সক্ষম হওয়াই ভাল ধারণা"। এর অর্থ এই নয় যে আপনাকে সিএলআই লিখতে হবে, কেবল আপনি এটি সহজেই করতে পারতেন।

সুতরাং, এটি যা বলে তা হল আপনার ইউআইটি বাকী কোড থেকে ডিকপল করা উচিত।


2
আমার মনে হয় আপনি কোনও মন্তব্য করার ইচ্ছা করেছিলেন, তাই না?
জুলিও রডরিগস

1

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

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

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

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


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

@jwd - মায়া একটি উদাহরণ আমি বেছে নিয়েছি কারণ আমি কয়েক বছর আগে এটি ব্যবহার করেছি, যদি একই চিন্তার ধারায় আপনার আরও ভাল থাকে তবে আমাকে জানান। ব্রাইস যদিও এটি ভাল জানেন না?
rjzii

0

এটা নির্ভর করে.

প্রায়শই আমরা আমাদের প্রোগ্রামগুলিকে মডেল / ভিউ / কন্ট্রোলার বা মডেল / ভিউ / ভিউ / মডেল হিসাবে বিভক্ত করি। মনে হচ্ছে মডেলটির কমান্ড লাইন অ্যাক্সেসের অনুমতি দেওয়া উচিত, তবে আমি নিয়ামক সম্পর্কে নিশ্চিত নই। স্বাভাবিকভাবেই, দৃষ্টিভঙ্গিটি প্রতিস্থাপন করা হচ্ছে।

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

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

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


4
-১: কোড কমপ্লিট হ'ল প্রোগ্রামিং ক্র্যাফ্ট সম্পর্কিত একটি ভাষা-অজ্ঞাত বই।
12:34

1
তিনি অন্যথায় কখনও বলেন নি।
13:39-এ উপভোটটি ক্লিক করুন

এবং তার প্রশ্নটি ইউআই বিকাশের জন্য নির্দিষ্ট ছিল ... আপনার বক্তব্য মিঃ ডিফোর্ড?
আয়ান

0

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

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


মানচিত্রে কোনও রুট প্লট করা কেন সিএলআই অটোমেশনে ndণ দেয় না? এরকম কিছু PlotRoute(startPoint, endPoint)হ'ল বেশ সোজা।
ম্যাসন হুইলারের

@ ম্যাসনভিয়েল - আমার বিশ্বাস এটি আরও ভালো হবেPlotRoute(startPoint, endPoint, chart)
ফ্যাব্রিকিও আরাউজো

0

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


0

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

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

দীর্ঘশ্বাস.

জনপ্রিয় এবং সুস্পষ্ট সবসময় "সেরা" হয় না।


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

0

হ্যাঁ, এটি সাধারণত একটি ভাল ধারণা।

রূপক দ্বারা, লোকেরা এটি RESTful ডিজাইনের একটি রূপ হিসাবে ভাবতে পারে। .... এটি প্রতি বছর নয়, সাধারণ হিসাবে (জি) ইউআই অ্যাকাউন্ট তৈরির মতো জটিল বহু-পর্যায়ের লেনদেনের সাথে জড়িত থাকতে পারে।

Better that one stays away from multi-stage complexity through shopping-cart-like models for transactional setup.

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

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


-1

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

"ব্যাংক অ্যাকাউন্ট তৈরি করুন" এবং "এমএস ওয়ার্ড ডকুমেন্ট লিখুন" এর মধ্যে একটি বড় পার্থক্য রয়েছে। আপনি যদি কোনও সি এল এল না তৈরি করেন তবে এটি প্রয়োজনীয় "সি এল এল প্রসঙ্গ" বিবেচনা করার জন্য মান যোগ করতে পারে। মডেলগুলি কেবল ব্যবসায়িক অবজেক্টের মডেলটিতে বাস করেন না!

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