টিবি সদস্য জিজ্ঞাসাবাদ ভিবিএ থেকে সি # এ চলেছে


20

পটভূমি

গত বছর, আমাকে প্রায় 10 ব্যবহারকারীর ব্যবসায়ের পরিকল্পনার জন্য একটি সরঞ্জাম তৈরি করতে বলা হয়েছিল। এটি অন্য আইটি দলের পক্ষে করা হয়েছিল যিনি আমার কাছে কাজটি "সাব-কন্ট্রাক্ট" করেছিলেন এবং প্রকল্পের সময়সীমাটি তাদের পক্ষে কিছুটা অপরিকল্পিত হওয়ার কারণে আমাকে তাড়াহুড়ো করে কিছুটা বাস্তবায়ন করতে হয়েছিল।

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

আমি প্রায় 4,000 লাইনের ভিবিএ কোড তৈরি করেছি এবং আমি ডেটা এবং উপস্থাপনা স্তরগুলি পৃথক করার চেষ্টা করেছি, আমি প্রকল্পের সময়সীমার কারণে সব ক্ষেত্রেই পারিনি couldn't সত্য কথা বলতে গেলে, যদিও আমি এই ওয়ার্কবুকটি তৈরি করতে পেরে গর্বিত, আমি একই সাথে কিছুটা হতাশ হয়েছি যে কোডিং এবং ব্যবহারকারীর উভয় ক্ষেত্রেও এটি আরও ভালভাবে করা যেত।

আজ

আজকের দিনে ফিরে আইটি টিম আবার আমার কাছে অনুরূপ ওয়ার্কবুকের জন্য অনুরোধ জানাতে এসেছিল (যাতে আমি উপরের অন্যান্য ওয়ার্কবুকের কিছু অংশ পুনরায় ব্যবহার করতে পারি) তবে এবার এটি অনেক জটিল এবং আরও বেশি সংখ্যক ব্যবহারকারী ব্যবহার করবেন ( প্রায় 200)।

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

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

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

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

আমি পয়েন্টগুলির একটি তালিকা প্রস্তুত করেছি যা আমি তাদের চেষ্টা করার জন্য এবং তাদের বোঝাতে ব্যবহার করতে পারি যে এই প্রকল্পের জন্য একটি সি # সমাধান আরও ভাল হবে, আমার এখন পর্যন্ত এটিই রয়েছে:

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

প্রশ্ন: তাদের বোঝাতে আমি আর কোন বিষয় যুক্ত করতে পারি? বা আমি কি এই প্রকল্পের সাথে চিবানো তার চেয়ে বেশি কামড়ানোর চেষ্টা করছি? আমার কি কেবল চুপ করে বসে ভিবিএতে করা উচিত?

আমি সচেতন যে কেবলমাত্র একটি নতুন ভাষায় সঞ্চারিত কারণ এটির "নতুন" বা "কুলার" হিসাবে দেখা উচিত সিদ্ধান্তের ভিত্তি হওয়া উচিত নয় এবং যেমন আমি এটিকে সিদ্ধান্তের পয়েন্ট হিসাবে অন্তর্ভুক্ত করতে প্রতিরোধ করেছি - এটি ঘটনা সম্পর্কে about

এছাড়াও, আমি সি # এবং ভিবিএর মধ্যে ভাষা হিসাবে আক্ষরিক তুলনা করতে বলছি না, কারণ এসওতে প্রচুর তুলনা রয়েছে।



2
আমার মনে হয় আপনার এটি দেখতে হবে। কেবলমাত্র যদি এটি দক্ষিণে যায় এবং আপনি ভিবিএতে আটকে যান। দাবি অস্বীকার: আমি প্রকল্পের অন্যতম বিকাশকারী। rubberduck-vba.com
RubberDuck

7
কেন সিবি # ভিবিএনটের চেয়ে?
তাইমির

2
আমি একটি খুব বড় (ভিবিএ কোডের 20k + লাইন) অ্যাপ্লিকেশনটি একটি এক্সকেল ওয়ার্কবুকের মধ্যে অন্তর্নিহিত করার জন্য একই অবস্থানে আছি। অফিস ২০১৩ এর সাথে পরীক্ষার পরে এটি কেবলমাত্র কাজ করতে ব্যর্থ হয়, নতুন অফিসের মডেলটিতে স্টার্ট-আপ ইভেন্টের ক্রম পরিবর্তনের কারণে এবং সম্ভবত ইএমইটির আরও কঠোর প্রয়োগের কারণে বিশ্বাস করা হয়। আমি এই বছর অফিস 2013 রোল আউট হওয়ার আগে সি # এবং ভিবি.এনইটি-তে ক্র্যাশ-রূপান্তর করার অবস্থানে রয়েছি। অন্যান্য, সংগঠনের চারপাশে ব্যবহৃত সরল (ভিবিএ বর্ধিত) ওয়ার্কবুকগুলি অনাক্রম্য নয়, কিছু কাজ করছে এবং অন্যেরা তা নয়।
পিটার জেরকেনস

3
সি # এখন এবং সি # 7 বছর আগে এক নয়। ভিবি ভিত্তিক ভাষা আরও বেশি হ্রাস পেয়েছে। আপনি যদি স্বল্প-সময়ের ফিক্স চান, এটি ভিবিএতে করুন। যদি এটি ভবিষ্যতে স্থায়ী হয় এবং সম্ভবত বাড়ানো হয়, তবে সি # তে যান।
মাস্ট

উত্তর:


30

আপনার তালিকাভুক্ত তিনটি বিষয় ন্যায্য বলে মনে হচ্ছে:

এটি একটি মোটামুটি গুরুত্বপূর্ণ প্রকল্প তাই এটির কাজ করতে হবে - একটি সি # সমাধানটি কোনও ভিবিএ ভিত্তিক সমাধান হিসাবে স্থিতিশীল বা কাজ হিসাবে কাজ করবে না।

আসলে, পরে আপনি বলুন: "আমি এই সুযোগটি আমার সি # দক্ষতায় তুলতে চাই, কারণ আমি বর্তমানে সি # তে যতটা সক্ষম নই আমি " ভিবিএর মতো "(জোর আমার)।

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

ভিবিএ সমাধানে আমরা [আমি] যা করেছি তা ফেলে দিতে হবে এবং এটি সি # তে স্ক্র্যাচ থেকে পুনরায় তৈরি করতে হবে।

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

কাউকে দুটি পৃথক সমাধান সমর্থন করতে হবে, একটি ভিবিএতে এবং একটি সি # তে। [প্রকৃতপক্ষে, তাদের কাছে বর্তমানে সহায়তার জন্য কেউ নেই, আমি সাধারণত পদক্ষেপ নিই]।

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


অন্যদিকে আপনার কয়েকটি বিষয় নিয়ে সমালোচনা করা যেতে পারে:

  • অংশ পরিক্ষাকরণ.

    আপনি আপনার বর্তমান প্রকল্পটিও ইউনিট করতে পারেন। যদি এর জন্য কোনও সুবিধাজনক কাঠামো না থাকে তবে একটি তৈরি করুন।

  • উৎস নিয়ন্ত্রণ.

    উত্স নিয়ন্ত্রণ পাঠ্যের সাথে ডিল করে। আপনার বর্তমান কোডটি পাঠ্য, সুতরাং আপনি এটির জন্য উত্স নিয়ন্ত্রণ ব্যবহার করতে পারেন।

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

  • কোড ডকুমেন্টেশন - অন্যান্য সমর্থনকারীদের জ্ঞান স্থানান্তর করার জন্য।

    একমত।

  • আরও ভাল কোডিং কনভেনশন - আরও ভাল নামকরণ এবং কাঠামো প্রয়োগের জন্য রিসার্পারের মতো জিনিসগুলি ব্যবহার করতে পারে।

    "আরও ভাল" সংজ্ঞা দিন। এক্সেলের ম্যাক্রোগুলির জন্য কোডিং কনভেনশন রয়েছে? যদি হ্যাঁ, এগুলি ব্যবহার করুন: এগুলি অন্য কোনওটির চেয়ে ভাল বা খারাপ নয়। যদি তা না হয় তবে এগুলি তৈরি করুন এবং প্রকাশ করুন যাতে অন্যান্য লোকেরা সেগুলিও ব্যবহার করতে পারে। ২০১০-এ পোস্ট করা একটি প্রশ্নের উত্তরগুলি হতাশার মতো বলে মনে হচ্ছে, তবে তার পর থেকে নতুন সরঞ্জাম উপলব্ধ থাকতে পারে।

    নোট করুন যে কোডিং কনভেনশনগুলির গুরুত্বপূর্ণ অংশটি হ'ল তাদের প্রতিশ্রুতিবদ্ধকরণের জন্য প্রয়োগ করা উচিত।

  • ভাল আইডিই - ত্রুটি হাইলাইট করার কারণে কম ভুল।

    একমত। এটা সত্য যে আমরা ভিসুয়াল স্টুডিও মধ্যে ম্যাক্রো লিখতে পারি না খুব দু: খজনক।

  • সমাবেশগুলির মাধ্যমে আরও পরিমিততা - ভবিষ্যতের সরঞ্জামগুলিতে পুনরায় ব্যবহারের প্রচার করতে পারে।

    আমি নিশ্চিত যে আপনার বর্তমান পণ্যটি কিছুটা ডিগ্রী মডুলারিটিও ব্যবহার করতে পারে।

  • পরিচালিত মোতায়েন - এই সরঞ্জামটি কার দ্বারা ব্যবহৃত তা নিয়ন্ত্রণ করতে পারে।

    একমত।


সম্পূর্ণ পুনর্লিখনের পরিবর্তে, আপনি ম্যাক্রো থেকে ভিবি.এনইটি-তে লেখা একটি সাধারণ সভায় ক্রমবর্ধমান কোড সরিয়ে নেওয়ার একটি উপায় অনুসন্ধান করতে পারেন । VB.NET এ কেন? তিনটি কারণ:

  • ভিবিএ এবং সি # এর মধ্যে ভিবিএ এবং ভিবি.এনইটের মধ্যে কম পার্থক্য রয়েছে।

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

  • কোনও ভাষা থেকে অন্য ভাষায় পুনর্লিখনের ফলে সম্ভাব্য বাগগুলি বাড়ে। এই প্রকল্পের জন্য আপনার এটির দরকার নেই।

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

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

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


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

3
ভিবি.এনইটিটি কি সত্যিই ভিবিএর সাথে এতটাই মিল যে আপনার প্রতিস্থাপনটি তৈরি করার পরে আপনার দ্বিতীয় এবং তৃতীয় পয়েন্টগুলি এখনও দাঁড়িয়ে আছে?
বেন অ্যারনসন

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

12

আমি সি # এ যাওয়ার সমর্থন করব। অন্যরা আপনার পয়েন্টগুলি খুব ভালভাবে কভার করেছে, তাই তারা যা বলেছে তা আমি পুনরায় ভাগ করব না। অবশ্যই ভিবিএ বদ্ধ থাকার জন্য অনেকগুলি ভাল কারণ রয়েছে।

যাইহোক , আমার একজন নিয়োগকর্তা অর্থবহ ডকুমেন্টেশন তৈরিতে একটি অনর্থক কাজ করেছিলেন। এত কিছুর যে নকশার সিদ্ধান্তগুলি আসলে ন্যায্যতার সাথে লেখা হয়েছিল - কেবল সমস্ত সফ্টওয়্যার প্রকল্পের যদি তা থাকে! আমার প্রধান কথা? নকশার সিদ্ধান্তগুলির মধ্যে একটি হ'ল "আমরা এই প্রোগ্রামটি জাভাতে লিখতে বেছে নিচ্ছি, কারণ মিঃ তাই-তাই-ই চান যে তাঁর জাভা অভিজ্ঞতার বছর দশেক তার জীবনবৃত্তান্তে রেখে দেওয়া"। যদি এটি আপনার জন্য সি # তে চলে যাওয়ার দৃ strong় কারণ, তবে এটি তুচ্ছ হিসাবে উপেক্ষা করা যাবে না। এটি আইটি দলকে ন্যায্য প্রমাণ করার জন্য আপনি যে কারণগুলি ব্যবহার করেন তার একটি হতে পারে না, কারণ তারা আপনার জীবনবৃত্তিতে যা চান তা সত্যই তারা যত্ন করে না, তারা কার্যকরী পণ্য সম্পর্কে যত্নশীল।

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

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

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

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

আপনার ভিবিএ কোডটি নিজের সময়ে সি # তে রূপান্তর করা আপনার জন্য কয়েকটি কাজ করবে:

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

এবং আইটির তিনটি পয়েন্টে ফিরে যাচ্ছি:

• এটি একটি মোটামুটি গুরুত্বপূর্ণ প্রকল্প তাই এটির কাজ করতে হবে - একটি সি # সমাধান ততটা স্থিতিশীল বা কার্যকর হবে না এবং বিদ্যমান ভিবিএ ভিত্তিক সমাধানের মতো হবে না।

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

V ভিবিএ সমাধানে আমরা [আমি] যা করেছি তা ফেলে দিতে হবে এবং এটি সি # তে স্ক্র্যাচ থেকে পুনরায় তৈরি করতে হবে।

এটির সাহায্যে আপনি কোনও প্রচেষ্টা বা কোড ফেলে দিচ্ছেন না।

• কাউকে দুটি পৃথক সমাধান সমর্থন করতে হবে, একটি ভিবিএতে এবং একটি সি # তে। [প্রকৃতপক্ষে, তাদের কাছে বর্তমানে সহায়তার জন্য কেউ নেই, আমি সাধারণত পদক্ষেপ নিই]।

আপনার কেবলমাত্র 1 সমাধান থাকবে, সমস্ত সি-তে in

সব মিলিয়ে আপনার গ্রাহক অনেক ঝুঁকি দেখেছেন। যদি আপনি এই ঝুঁকি হ্রাস করার পদক্ষেপ নিতে পারেন তবে তারা সি # তে পরিবর্তনটি গ্রহণ করতে পারে।


2
আপনি আমার উত্তরের জন্য কিছু খুব বৈধ কাউন্টার আর্গুমেন্ট তৈরি। এটি করা এবং এটি কীভাবে হয় তা দেখার জন্য ++ তুমি ঠিক বলছো. প্রকল্পটি সম্ভবত একটি বিকেলে পোর্ট করা যেতে পারে।
রাবারডাক

11

আমি এটি বলতে ঘৃণা করি তবে আপনার যুক্তিগুলি কেবল জল ধরে না।

অংশ পরিক্ষাকরণ.

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

উৎস নিয়ন্ত্রণ

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

কোড ডকুমেন্টেশন

এছাড়াও একটি সমাধান সমস্যা। এমজেড-টুলস একটি এক্সএমএল ডকুমেন্টেশন বৈশিষ্ট্য যা। নেট এর এক্সএমএল মন্তব্য ডক্সের সাথে খুব একইভাবে কাজ করে।

ভাল কোডিং কনভেনশন

ভিজ্যুয়াল স্টুডিওতে যেমন রিসার্পার প্লাগইন রয়েছে ঠিক তেমনই এমজেড-টুলস এবং রুবারডাকক উভয়ই এই জাতীয় বৈশিষ্ট্যযুক্ত।

ভাল আইডিই

আবার, ভিবিএ আইডিইর জন্য প্লাগ-ইনগুলি উপলব্ধ।

সমাবেশগুলির মাধ্যমে আরও পরিমিততা - ভবিষ্যতের সরঞ্জামগুলিতে পুনরায় ব্যবহারের প্রচার করতে পারে।

এছাড়াও একটি সমাধান সমস্যা। না, আপনি সমাবেশগুলি তৈরি করতে পারবেন না, তবে আপনি অন্যান্য ভিবিএ প্রকল্পগুলি উল্লেখ করতে পারেন।

পরিচালিত মোতায়েন - এই সরঞ্জামটি কার দ্বারা ব্যবহৃত তা নিয়ন্ত্রণ করতে পারে।

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

স্থাপনার ক্ষেত্রে এটিও একটি সমাধান সমস্যা problem হ্যাঁ, এটির কোড দরকার, তবে এখানে উদাহরণ রয়েছে যা আপনি ব্যবহার / পরিবর্তন করতে পারেন


এই সমস্ত কিছুর শীর্ষে, আপনি প্রথম থেকেই শুরু করবেন is আমিও জোয়েল স্পলস্কির নিবন্ধটি সুপারিশ করব ।

যে কোনও সফ্টওয়্যার সংস্থা এটি করতে পারে তার সবচেয়ে খারাপ কৌশলগত ভুল করে তারা এটি করেছে:

তারা স্ক্র্যাচ থেকে কোডটি পুনরায় লেখার সিদ্ধান্ত নিয়েছে।

আপনার আইটি বলছি ঠিক আছে। আপনার এটি স্ক্র্যাচ থেকে পুনরায় লেখার দরকার নেই। আপনার আপনার বর্তমান সমাধান দিয়ে সমস্যার সমাধান করা উচিত।

এখন, এই সমস্তটির সাথে, আমি পুরোপুরি বুঝতে পারি যে আপনি কেন সি # বা ভিবি.নেট যে কোনও একটিতে এটি করতে চান। এগুলি সত্যিই আরও ভাল সমাধান, যদি আপনি একটি নতুন প্রকল্প শুরু করেন তবে এর শব্দ থেকে এটি কোনও নতুন প্রকল্প নয়। আপনার যা যা আছে তার থেকে এটি শুরু করে তা ভেঙে ফেলা আরও ভাল।


4

আপনি উল্লেখ করতে পারেন যে এমনকি মাইক্রোসফ্ট এই নিবন্ধে বলেছেন :

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

নিবন্ধটি অফিসের উপর ভিত্তি করে স্টাফ তৈরির বিভিন্ন পদ্ধতির বিষয়ে, সম্ভবত আপনি আপনার আলোচনায় এটি থেকে কিছু অন্যান্য উপকারিতা ও বোধও নিতে পারেন।


হ্যাঁ. সরবরাহ এখানে মূল বিষয়। বাকি সব শব্দার্থবিজ্ঞান।
রাবারডাক

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

আমি মনে করি না যে আমি @RLH- এর সাথে একমত হয়েছি agree বেশ কয়েকটি ছোট স্কেলের সমস্যার জন্য ভিবিএ একটি বুদ্ধিমান সমাধান হিসাবে রয়ে গেছে। বিতরণ যখন ব্যর্থ হয় তখন এটি ব্যর্থ হয়।
রাবারডাক

4

এটি কীভাবে আপনি সি # তে স্থানান্তরিত করতে চান তার উপর নির্ভর করে (অর্থাত আপনি কোন প্রযুক্তিটি ব্যবহার করতে যাচ্ছেন)।

আপনি যদি ওপেনএক্সএমএল ব্যবহার করতে চলেছেন তবে আপনি মোট পুনরায় লেখার কথা বলছেন যা আপনার যদি কাজ করে এমন কোনও সমাধান পান তবে এটি প্রস্তাবিত নয়।

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

var excelApplication = new Application();
var workbook = excelApplication.Workbooks.Open(@"C:\location.xlsx");

অনেক ক্ষেত্রে আপনি আপনার ভিবিএ কোডটি কপি / পাস্তা করতে পারেন, ফাংশন কলগুলির সাথে প্রাক্সিক্সিং করা workbook., ডিমের পরিবর্তে ভার ইত্যাদি সহ প্রতিস্থাপন করতে পারেন এবং শেষে সেমিকোলন যুক্ত করতে পারেন।

এটি মূলত (এক্সেল) নীচে একই ফ্রেমওয়ার্ক, আপনি কেবল ভিবিএ থেকে সি # তে সিন্ট্যাক্স পরিবর্তন করছেন।

আপনার কাজ শেষ হয়ে গেলে, অ্যাপ্লিকেশনটি সংরক্ষণ এবং বন্ধ করতে ভুলবেন না:

workbook.Save();
excelApplication.Quit();

তারপরে মার্শালের সাথে আবেদনটি প্রকাশ করুন:

Marshal.ReleaseComObject(excelApplication);

আমি সম্ভবত এক্সেল অ্যাপ্লিকেশন অবজেক্টের চারপাশে আইডিস্পোজেবল প্রয়োগকারী একটি র‌্যাপার ক্লাস লিখব, তারপরে usingএই অবজেক্টটি কখন ব্যবহার করা হবে তা নিশ্চিত হন ।

আপনার কেস করার ভাল উপায় হ'ল এক ঘন্টা বা এটি করা ব্যয় করা, যা খুব অল্প সময়ের মধ্যে আপনি কোডটি কত দ্রুত পোর্ট করতে পারবেন তা প্রদর্শন করে এবং আপনার সহকর্মীদের বোঝায় যে এটি একটি ভাল ধারণা।

কোডটি একরকমভাবে অপরিবর্তিত থাকবে তবে ভিজুয়াল স্টুডিওতে সি # প্রকল্প থাকার কথা আপনি উল্লেখ করেছেন এমন সমস্ত সুবিধা রয়েছে।


2

আমি একটি খুব বড় (ভিবিএ কোডের 20k + লাইন) অ্যাপ্লিকেশনটি একটি এক্সকেল ওয়ার্কবুকের মধ্যে অন্তর্নিহিত করার জন্য একই অবস্থানে আছি। অফিস ২০১৩ এর সাথে পরীক্ষার পরে এটি কেবলমাত্র কাজ করতে ব্যর্থ হয়, নতুন অফিসের মডেলটিতে স্টার্ট-আপ ইভেন্টের ক্রম পরিবর্তনের কারণে এবং সম্ভবত ইএমইটির আরও কঠোর প্রয়োগের কারণে বিশ্বাস করা হয়। আমি এই বছর অফিস 2013 রোল আউট হওয়ার আগে সি # এবং ভিবি.এনইটি-তে ক্র্যাশ-রূপান্তর করার অবস্থানে রয়েছি। অন্যান্য, সংগঠনের চারপাশে ব্যবহৃত সরল (ভিবিএ বর্ধিত) ওয়ার্কবুকগুলি অনাক্রম্য নয়, কিছু কাজ করছে এবং অন্যেরা তা নয়।

ত্রুটিগুলি ওয়ার্কবুক_অপেন ইভেন্টে ঘটে , যেখানে ওয়ার্কবুকের শিটগুলি আর উপলব্ধ নেই এবং কোনও ভিবিএ কোড রেফারেন্স হওয়ার আগে অভ্যন্তরীণ এক্সকেল কোডে।

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

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

সংযোজন:

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

অথবা - এক্সেল ভিবিএ কোড ক্লিনার হিসাবে একটি বিনামূল্যে ইউটিলিটি ব্যবহার করুন ity


2

আমি আমার সি # দক্ষতায় এই সুযোগটি আরও বাড়িয়ে তুলতে চাই, কারণ আমি বর্তমানে সি # তে যতটা সক্ষম নই আমি ভিবিএর মতো এবং আমি এর মতো একটি প্রকল্প আমাকে "পরবর্তী স্তরে" নিয়ে যেতে চাই।

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

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

তারপরে আবারও, যদি আপনি এটির বিষয়ে দৃ strong়তা অনুভব করেন এবং প্রকল্পটি তৈরি করা আপনার কাঁধের উপর নির্ভর করে, আপনার ইচ্ছা মতো করুন। অনুমতি চেয়ে ক্ষমা পাওয়া সর্বদা সহজ।

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