如果解決方案由框架,工具或其他任何東西代表,則無關緊要。這個問題很難解決,因爲多年以來我一直在反對它。檢測文件之間的代碼重複並進行半自動重構
我會舉一個例子來更好地闡明我在說什麼。
File1中
<head>
<title>Fotografia Elenco Completo Filtri Professionali</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META name="Language" content="it">
<META http-equiv="Revisit-After" content="2 days">
<style>
<!--
table.MsoNormalTable
{mso-style-parent:"";
font-size:10.0pt;
font-family:"Times New Roman"}
-->
</style>
</head>
文件2
<head>
<title>Militari</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="keywords" content="militari, ....">
<meta name="robots" content="INDEX, FOLLOW">
<meta name="Language" content="it">
<meta http-equiv="Revisit-After" content="2 days">
<meta name="Rating" content="General">
<link rel="stylesheet" type="text/css" href="./file/stile.css">
<script language="JavaScript">
文件3
<head>
<title>Cinema - Recensioni e Trame di Film</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="keywords" content="recensioni film">
<meta name="description" content="Ottimo sito di recensioni di film, trame di film cinematografice, di Videogame e Romanzi. ">
<meta name="robots" content="INDEX, FOLLOW">
<meta name="Language" content="it">
<meta http-equiv="Revisit-After" content="2 days">
<meta name="Rating" content="General">
<link rel="stylesheet" type="text/css" href="file/stile.css">
<style type="text/css">
body {
background-color:#F0F0F0;
text-align: center;
}
</style>
對於一個人來說,避免這種代碼重複的任務是顯而易見的。他可以認識到「」,「」是分隔符。行的順序無關緊要,哪些部分可以放入變量(或作爲數據庫中的值存儲)以及哪些文件足夠相似以便重構。
整個過程似乎不會很難自動化。但..直到現在我找不到任何解決方案。定界符甚至automatizing的認識是很難..
我發現最好的辦法是用正則表達式工具發揮,成爲瘋狂:d
重構
文件1後
header -> PrintHeader();
file2
header -> PrintHeader();
文件3
header -> PrintHeader();
GlobalFile
class header
{
function PrintHeader
{
SELECT title, content-type, language, revisit-after, rating, robots, extra_text_unparsed
into myArray
FROM header_table
WHERE filename = $filename
foreach(v in myArray)
{
echo ....
}
}
}
什麼建議嗎?
對於這個人來說,很難理解你的意思。你能提供一個三個文件如何重構的例子嗎? – venerik
@venerik:編輯。這並不容易。如果你喜歡我會用powergrep發佈最終的解決方案,但它不是最聰明的工具...... – Revious