怎樣才能使程序具有可移植性呢?
.盡可能避免針對特定系統(tǒng)的假定和方法.例如,不認(rèn)定程序只在OpenLinux系統(tǒng)上運(yùn)行,或者只在使用RPM包管理系統(tǒng)的系統(tǒng)上使用.
.隔離依賴于系統(tǒng)的部分.如果說有了一種特殊的GUI環(huán)境,例如ncurses,那么要把GUI部分的代碼單獨(dú)放在它自己的模塊中.這樣做可以使移植任務(wù)變得簡單,
比如讓程序使用基于X的GUI環(huán)境或者另一種基于文本的GUI S-Lang而不是ncurses.
.盡可能復(fù)用已有的接口.為什么一定要重新創(chuàng)造已經(jīng)存在的東西呢?從常用的數(shù)據(jù)庫管理庫,比如Berkeley DB或GNU DBM中選出一種代替你自己的數(shù)據(jù)庫管理庫.
.使用標(biāo)準(zhǔn)接口,比如多種POSIX標(biāo)準(zhǔn);標(biāo)準(zhǔn)語言,比如C和C++;以及標(biāo)準(zhǔn)庫,比如標(biāo)準(zhǔn)C庫,NAG數(shù)學(xué)庫和terminfo等常用庫.
http://www.cs.wvu.edu/~jdm/research/portability/portbib.html 上提供的參考書目是個(gè)很好的資源.
.盡可能避免針對特定系統(tǒng)的假定和方法.例如,不認(rèn)定程序只在OpenLinux系統(tǒng)上運(yùn)行,或者只在使用RPM包管理系統(tǒng)的系統(tǒng)上使用.
.隔離依賴于系統(tǒng)的部分.如果說有了一種特殊的GUI環(huán)境,例如ncurses,那么要把GUI部分的代碼單獨(dú)放在它自己的模塊中.這樣做可以使移植任務(wù)變得簡單,
比如讓程序使用基于X的GUI環(huán)境或者另一種基于文本的GUI S-Lang而不是ncurses.
.盡可能復(fù)用已有的接口.為什么一定要重新創(chuàng)造已經(jīng)存在的東西呢?從常用的數(shù)據(jù)庫管理庫,比如Berkeley DB或GNU DBM中選出一種代替你自己的數(shù)據(jù)庫管理庫.
.使用標(biāo)準(zhǔn)接口,比如多種POSIX標(biāo)準(zhǔn);標(biāo)準(zhǔn)語言,比如C和C++;以及標(biāo)準(zhǔn)庫,比如標(biāo)準(zhǔn)C庫,NAG數(shù)學(xué)庫和terminfo等常用庫.
http://www.cs.wvu.edu/~jdm/research/portability/portbib.html 上提供的參考書目是個(gè)很好的資源.