একটি বিদ্যমান ওয়েব অ্যাপ্লিকেশন রিফ্যাক্টরিংয়ের কাছে কীভাবে যেতে হবে?


11

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

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


4
যদি এটি না ভেঙে যায় তবে এটি ঠিক করবেন না। পরীক্ষা লেখার জন্য আরও সময় ব্যয় করুন, এবং অহেতুক পরিবর্তন করতে কম সময় ব্যয় করুন।
ম্যাকনিল

মাত্র আগ্রহের বাইরে। আপনার অ্যাপ্লিকেশনটি লিখতে আপনি কোন ভাষা / প্রযুক্তি ব্যবহার করেছেন? এটি কোন ধরণের সাইট? দেখুন welie.com/patterns -> নকশা প্রসঙ্গ -> সাইট ধরনের
JW01

@ JW01 আমি অভ্যন্তরীণ লজিকের জন্য পিএইচপি এবং ভিউ পরিচালনা এবং ফর্ম বৈধতার জন্য এজেএক্স ব্যবহার করি। এটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশন প্যাটার্নের বৈকল্পিক হতে পারে তবে কেবলমাত্র একটি পরিবেশে উপলব্ধ, কারণ এটি একটি অভ্যন্তরীণ সরঞ্জাম।
এল্ড্রোস

আমি যখন প্রশ্নের উত্তর দিয়েছিলাম তখন আমার মাথায় আপনার অ্যাপের সম্পূর্ণ ভিন্ন চিত্র ছিল। আপনার এপিআইটি পাবলিক ডোমেনে থাকলে তার পরিবর্তনের এত বেশি স্বাধীনতা আছে।
JW01

@ জেডব্লিউ01 আমি খুব নির্দিষ্ট হতে চাই না, কারণ আমি এই প্রশ্নটি অন্যদের পক্ষেও কার্যকর হতে চাই।
এল্ড্রোস

উত্তর:


6

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

আপনি যদি সহজেই পরীক্ষার যোগ্য কোনও টুকরো খুঁজে না পান, তবে আপনাকে কোনও পরীক্ষার স্যুটটির সুরক্ষা সুরক্ষা ছাড়াই এটিকে পরীক্ষামূলক করে তোলা দরকার, সেক্ষেত্রে আপনি খুব যত্ন সহকারে কিছু প্রায় টেস্টেবল কোডটি পরিবর্তন করতে পারেন যাতে এটি পরীক্ষামূলক হয়।

ব্রাউজারে জিনিসগুলি রেন্ডার করে না এমন কোড - "পরিকাঠামো" কোড, মডেল, ডাটাবেস-স্পর্শকারী স্টাফ - এটি শুরু করার জন্য ভাল জায়গা হতে পারে।

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


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

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

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

@ JW01 আপনি একেবারে ঠিক বলেছেন - এটি খুব ভঙ্গুর। একবারে বন্ধ ধরনের উপায়ে রিফ্যাক্টরিংয়ের পরীক্ষা করার জন্য এটি দুর্দান্ত: আপনি পরীক্ষা করতে পারেন যে রিফ্যাক্টরিং আউটপুট পরিবর্তন করে না, তবে যতবার আপনি এইচএমএলএল উত্পন্ন হয় তখন আপনাকে "নতুন প্রত্যাশিত" এইচটিএমএল সংরক্ষণ করতে হবে।
ফ্রাঙ্ক শায়ারার

10

মাইকেল ফেয়ার্সের "লেগ্যাসি কোডের সাথে কার্যকরীভাবে কার্যকর" নামক একটি দুর্দান্ত বই রয়েছে book আসুন এটির মুখোমুখি হোন, আমাদের সবার লিগ্যাসি কোড রয়েছে।

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


3
"আসুন আমরা এটির মুখোমুখি হব, আমরা যা করছি তা আজকের কালকের উত্তরাধিকারী সফ্টওয়্যারটি লিখছি" " - মার্টিন
ফওলার

3
  • হ্যাঁ - ওয়েব অ্যাপ্লিকেশনগুলি ওয়েব সাইটের থেকে পৃথক

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

  • সংস্করণ নিয়ন্ত্রণ ব্যবহার শুরু করুন

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

  • অসম্পূর্ণতা কমিয়ে দিন

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

আপনাকে নিজেকে জিজ্ঞাসা করতে হবে, "একটি ইউআরএল দেওয়া হয়েছে এটির স্বাভাবিক রূপটি কী?" একবার আপনি এই পিন ডাউন করা। তারপরে আপনার সাইটে 50,0000+ ইউআরএল কমে যেতে পারে, 2,000। যা আপনার মনের মধ্যে বোঝা এবং পরিচালনা করা অনেক সহজ।

দেখুন: http://www.sugarrae.com/be-a-normalizer-a-c14n-exterminator/

  • 'কী' তা মডেলিং দিয়ে শুরু করুন, 'আপনি কী চান তা' নয়

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

দেখুন: http://www.joelonsoftware.com/articles/fog0000000069.html

দেখুন: http://www.laputan.org/mud/

  • এটি পরীক্ষার অধীনে রাখা ভাল ধারণা।

একটি পরীক্ষা স্যুট / ফ্রেমওয়ার্ক তৈরি করুন এবং পরীক্ষা যুক্ত করা শুরু করুন। তবে, কিছু লিগ্যাসি কোড পরীক্ষা করা বেশ জটিল। সুতরাং, এটির উপর খুব বেশি ঝুলতে থাকবেন না। আপনার যতক্ষণ ফ্রেমওয়ার্ক থাকে ততক্ষণ আপনি অল্প অল্প করে পরীক্ষা যোগ করতে পারেন।

দেখুন: http://www.simpletest.org/en/web_tester_docamentation.html

  • আপনার দৃic় প্রত্যয় মধ্যে সাহস আছে

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


আমি যেতে পারে। তবে এগুলি এমন কিছু জিনিস যা আমি পুরানো উত্তরাধিকারের সাইটটিকে একটি চকচকে নতুনতে পুনর্নির্মাণের সময় বাছাই করেছি।


ভাল রেফারেন্স লিঙ্ক!
নিলেশ

2

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

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

কোডের একটি বিভাগের জন্য পরীক্ষাগুলি সহ, কোডটি পরিবর্তন করুন। যতক্ষণ পরীক্ষা দরকার ততক্ষণ আপনার যা যা প্রয়োজন তা করুন।

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

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

শেষ পর্যন্ত, এটি একটি বহু-পদক্ষেপ প্রক্রিয়া। একবারে এটি করার চেষ্টা করবেন না, একবারে এটি একবার নেবেন take


-2

যদি আমাকে কুৎসিত করার পক্ষে এটি কুৎসিত হয় তবে পুরো জিনিসটি মুছতে এবং প্রতিস্থাপনের জন্য একটি ড্রপ লিখতে আমার পক্ষে এটি যথেষ্ট কুশল।

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


2
আমি একমত নই (যদিও আমি আপনাকে -1 দিইনি)। joelonsoftware.com/articles/fog000000000069.html
JW01

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

খুব খারাপ ধারণা! আমি আশা করি আমি জোয়েল স্পলস্কির লেখাটি পড়েছিলাম যেটি @ JW01 এর সাথে 2 বছর আগে লিঙ্ক করা হয়েছিল আগে আমি অ্যাংুলার এবং বুটস্ট্র্যাপ ব্যবহার করে একটি বিদ্যমান পিএইচপি অ্যাপটি পুনরায় লেখার সিদ্ধান্ত নিয়েছিলাম। কৌণিক এবং বুটস্ট্র্যাপ দুর্দান্ত প্রযুক্তি তবে আমি 2 বছর পরে এই পুরানো অ্যাপটিকে রূপান্তরিত করার চেষ্টা করছি। আমার কেবলমাত্র বিদ্যমান অ্যাপ্লিকেশনটি সংশোধন করা উচিত ছিল এবং ছিঁড়ে ফেলা / প্রতিস্থাপন করা উচিত নয়।
জ্যাক ম্যাকমবার

আমি বিশেষত আপনার মন্তব্যে ফ্যাক্টরিং করার সময় সম্মত হন। "পরিস্থিতি" একটি সিদ্ধান্ত নির্ধারণ করে এমন মূল বিষয়। আপনার কি এমন বিশাল এপিআই ছিন্ন করা উচিত যা আপনার পুরো ব্যবসায়ের পরিবেশন করে? কে জানে, বিবেচনা করার মতো অনেক কিছুই আছে। আপনি পরে পরীক্ষা করার আগে পরীক্ষা করতে চান। লিঙ্কযুক্ত নিবন্ধটি খুব লিনিয়ার, যেমন একটি আকার সবই ফিট করে, তবে যখন কোনও কিছু বগি হয় বা আসলেই পুরানো কোড হয় তবে তার কী হবে? নিবন্ধটি কি সত্যিই প্রস্তাব দিচ্ছে যে আমরা কোড সহ উত্তরাধিকার থেকে অগ্রসর হব না যা পড়া এবং বজায় রাখা আরও সহজতর? দেব বিশ্বে কোনও কালো-সাদা নেই, কেবলমাত্র পরিস্থিতি এবং সিদ্ধান্ত
জেমস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.