版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、技術(shù)開發(fā)規(guī)范初稿北京中科天擎信息技術(shù)有限公司2016年11月12日目錄一、JAVA代碼規(guī)范31. 標(biāo)識符命名規(guī)范31.1 概述31.2 包名41.3 類名41.4 方法名51.5 域(field)名71.6 局部變量名82. 代碼格式82.1 源文件編碼82.2 行寬82.3 包的導(dǎo)入82.4 類格式82.5 域格式82.5 方法格式92.6 代碼塊格式93. 注釋規(guī)范113.1 注釋 vs 代碼113.2 Java Doc123.3 塊級別注釋123.4 行內(nèi)注釋144 最佳實(shí)踐和禁忌144.1 每次保存的時(shí)候,都讓你的代碼是最美的144.2 使用log而不是System.out.print
2、ln()144.3 每個(gè)if while for等語句,都不要省略大括號144.4 善用TODO:154.5 在需要留空的地方放一個(gè)空語句或注釋,告述讀者,你是故意的154.6 不要再對boolean值做true false判斷154.7 減少代碼嵌套層次164.8 程序職責(zé)單一174.9 變量的聲明,初始化和被使用盡量放到一起174.10 縮小變量的作用域184.11 盡量不要用參數(shù)來帶回方法運(yùn)算結(jié)果19二、數(shù)據(jù)庫表及字段命名規(guī)范201.數(shù)據(jù)庫表命名規(guī)范:202.表字段命名規(guī)范:203.表設(shè)計(jì)規(guī)范:214.存儲過程命名規(guī)范225.存儲過程設(shè)計(jì)規(guī)范236.視圖命名規(guī)范237.視圖設(shè)計(jì)規(guī)范238
3、.觸發(fā)器命名規(guī)范249.觸發(fā)器設(shè)計(jì)規(guī)范24一、 JAVA代碼規(guī)范Java代碼規(guī)范以SUN的標(biāo)準(zhǔn)Java代碼規(guī)范為基礎(chǔ),本文檔中沒有說明的地方,請參看SUN Java標(biāo)準(zhǔn)代碼規(guī)范。如果兩邊有沖突,以本文檔為準(zhǔn)。1. 標(biāo)識符命名規(guī)范1.1 概述標(biāo)識符的命名力求做到統(tǒng)一、達(dá)意和簡潔。1.1.1 統(tǒng)一統(tǒng)一是指,對于同一個(gè)概念,在程序中用同一種表示方法,比如對于供應(yīng)商,既可以用supplier,也可以用provider,但是我們只能選定一個(gè)使用,至少在一個(gè)Java項(xiàng)目中保持統(tǒng)一。統(tǒng)一是作為重要的,如果對同一概念有不同的表示方法,會(huì)使代碼混亂難以理解。即使不能取得好的名稱,但是只要統(tǒng)一,閱讀起來也不會(huì)太困
4、難,因?yàn)殚喿x者只要理解一次。1.1.2 達(dá)意達(dá)意是指,標(biāo)識符能準(zhǔn)確的表達(dá)出它所代表的意義,比如: newSupplier, OrderPaymentGatewayService等;而 supplier1, service2,idtts等則不是好的命名方式。準(zhǔn)確有兩成含義,一是正確,而是豐富。如果給一個(gè)代表供應(yīng)商的變量起名是 order,顯然沒有正確表達(dá)。同樣的,supplier1, 遠(yuǎn)沒有targetSupplier意義豐富。1.1.3 簡潔簡潔是指,在統(tǒng)一和達(dá)意的前提下,用盡量少的標(biāo)識符。如果不能達(dá)意,寧愿不要簡潔。比如:theOrderNameOfTheTargetSupplierWhic
5、hIsTransfered 太長, transferedTargetSupplierOrderName則較好,但是transTgtSplOrdNm就不好了。省略元音的縮寫方式不要使用,我們的英語往往還沒有好到看得懂奇怪的縮寫。1.1.4 駱駝法則Java中,除了包名,靜態(tài)常量等特殊情況,大部分情況下標(biāo)識符使用駱駝法則,即單詞之間不使用特殊符號分割,而是通過首字母大寫來分割。比如: SupplierName, addNewContract,而不是 supplier_name, add_new_contract。1.1.5 英文 vs 拼音盡量使用通俗易懂的英文單詞,如果不會(huì)可以向隊(duì)友求助,實(shí)在不
6、行則使用漢語拼音,避免拼音與英文混用。比如表示歸檔,用archive比較好, 用pigeonhole則不好,用guiDang尚可接受。1.2 包名使用小寫字母如 mon.settlment,不要 mon.Settlement單詞間不要用字符隔開,比如 mon.settlment.jsfutil,而不要mon.settlement.jsf_util1.3 類名1.3.1 首字母大寫類名要首字母大寫,比如 SupplierService, PaymentOrderAction;不要 supplierService, paymentOrderAction.1.3.2 后
7、綴類名往往用不同的后綴表達(dá)額外的意思,如下表:后綴名意義舉例Service表明這個(gè)類是個(gè)服務(wù)類,里面包含了給其他類提同業(yè)務(wù)服務(wù)的方法PaymentOrderServiceImpl這個(gè)類是一個(gè)實(shí)現(xiàn)類,而不是接口PaymentOrderServiceImplInter這個(gè)類是一個(gè)接口LifeCycleInterDao這個(gè)類封裝了數(shù)據(jù)訪問方法PaymentOrderDaoAction直接處理頁面請求,管理頁面邏輯了類UpdateOrderListActionListener響應(yīng)某種事件的類PaymentSuccessListenerEvent這個(gè)類代表了某種事件PaymentSuccessEvent
8、Servlet一個(gè)ServletPaymentCallbackServletFactory生成某種對象工廠的類PaymentOrderFactoryAdapter用來連接某種以前不被支持的對象的類DatabaseLogAdapterJob某種按時(shí)間運(yùn)行的任務(wù)PaymentOrderCancelJobWrapper這是一個(gè)包裝類,為了給某個(gè)類提供沒有的能力SelectableOrderListWrapperBean這是一個(gè)POJOMenuStateBean1.4 方法名首字母小寫,如 getName()不要 GetName()動(dòng)詞在前,如 getName(),不要Nameget()動(dòng)詞前綴往往表
9、達(dá)特定的含義,如下表:前綴名意義舉例create創(chuàng)建createOrder()delete刪除deleteOrder()add創(chuàng)建,暗示新創(chuàng)建的對象屬于某個(gè)集合addPaidOrder()remove刪除removeOrder()init或則initialize初始化,暗示會(huì)做些諸如獲取資源等特殊動(dòng)作initializeObjectPooldestroy銷毀,暗示會(huì)做些諸如釋放資源的特殊動(dòng)作destroyObjectPoolopen打開openConnection()close關(guān)閉closeConnection()<read讀取readUserName()write寫入writeUser
10、Name()get獲得getName()set設(shè)置setName()prepare準(zhǔn)備prepareOrderList()copy復(fù)制copyCustomerList()modity修改modifyActualTotalAmount()calculate數(shù)值計(jì)算calculateCommission()do執(zhí)行某個(gè)過程或流程doOrderCancelJob()dispatch判斷程序流程轉(zhuǎn)向dispatchUserRequest()start開始startOrderProcessing()stop結(jié)束stopOrderProcessing()send發(fā)送某個(gè)消息或事件sendOrderPaid
11、Message()receive接受消息或時(shí)間receiveOrderPaidMessgae()respond響應(yīng)用戶動(dòng)作responseOrderListItemClicked()find查找對象findNewSupplier()update更新對象updateCommission()find方法在業(yè)務(wù)層盡量表達(dá)業(yè)務(wù)含義,比如 findUnsettledOrders(),查詢未結(jié)算訂單,而不要findOrdersByStatus()。 數(shù)據(jù)訪問層,find,update等方法可以表達(dá)要執(zhí)行的sql,比如findByStatusAndSupplierIdOrderByName(Status.P
12、AID, 345)1.5 域(field)名1.5.1 靜態(tài)常量全大寫用下劃線分割,如public static find String ORDER_PAID_EVENT = "ORDER_PAID_EVENT"1.5.2 枚舉全大寫,用下劃線分割,如public enum Events ORDER_PAID,ORDER_CREATED1.5.3 其他首字母小寫,駱駝法則,如:public String orderName;1.6 局部變量名參數(shù)和局部變量名首字母小寫,駱駝法則。盡量不要和域沖突,盡量表達(dá)這個(gè)變量在方法中的意義。2. 代碼格式用空格字符縮進(jìn)源代碼,不要用ta
13、b,每個(gè)縮進(jìn)4個(gè)空格。2.1 源文件編碼源文件使用utf-8編碼,結(jié)尾用unix n 分格。2.2 行寬行寬度不要超過130。2.3 包的導(dǎo)入刪除不用的導(dǎo)入,盡量不要使用整個(gè)包的導(dǎo)入。在eclipse下經(jīng)常使用快捷鍵 ctrl+shift+o 修正導(dǎo)入。2.4 類格式2.5 域格式每行只能聲明一個(gè)域。域的聲明用空行隔開。2.5 方法格式2.6 代碼塊格式2.6.1 縮進(jìn)風(fēng)格大括號的開始在代碼塊開始的行尾,閉合在和代碼塊同一縮進(jìn)的行首,例如:package com.test;public class TestStyle extends SomeClassimplements AppleInter
14、, BananaInter public static final String THIS_IS_CONST = "CONST VALUE"private static void main(String args) int localVariable = 0;public void compute(String arg) if (arg.length() > 0) System.out.println(arg);for (int i = 0; i < 10; i+) System.out.println(arg);while (condition) do oth
15、erMethod(); while (condition);switch (i) case 0:callFunction();break;case 1:callFunctionb();break;default:break;2.6.2 空格的使用 表示分割時(shí)用一個(gè)空格不能這樣:if ( a > b ) /do something here; 二元三元運(yùn)算符兩邊用一個(gè)空格隔開如下:a + b = c;b - d = e;return a = b ? 1 : 0;不能如下:a+b=c;b-d=e;return a=b?1:0; 逗號語句后如不還行,緊
16、跟一個(gè)空格如下:call(a, b, c);不能如下:call(a,b,c);2.6.3 空行的使用空行可以表達(dá)代碼在語義上的分割,注釋的作用范圍,等等。將類似操作,或一組操作放在一起不用空行隔開,而用空行隔開不同組的代碼, 如圖:order = orderDao.findOrderById(id);/update propertiesorder.setUserName(userName);order.setPrice(456);order.setStatus(PAID);orderService.updateTotalAmount(order);session.saveOrUpdate(or
17、der);上例中的空行,使注釋的作用域很明顯.· 連續(xù)兩行的空行代表更大的語義分割。· 方法之間用空行分割· 域之間用空行分割· 超過十行的代碼如果還不用空行分割,就會(huì)增加閱讀困難3. 注釋規(guī)范3.1 注釋 vs 代碼· 注釋宜少而精,不宜多而濫,更不能誤導(dǎo)· 命名達(dá)意,結(jié)構(gòu)清晰, 類和方法等責(zé)任明確,往往不需要,或者只需要很少注釋,就可以讓人讀懂;相反,代碼混亂,再多的注釋都不能彌補(bǔ)。所以,應(yīng)當(dāng)先在代碼本身下功夫。· 不能正確表達(dá)代碼意義的注釋,只會(huì)損害代碼的可讀性。· 過于詳細(xì)的注釋,對顯而易見的代碼添加的注釋
18、,羅嗦的注釋,還不如不寫 。· 注釋要和代碼同步,過多的注釋會(huì)成為開發(fā)的負(fù)擔(dān)· 注釋不是用來管理代碼版本的,如果有代碼不要了,直接刪除,svn會(huì)有記錄的,不要注釋掉,否則以后沒人知道那段注釋掉的代碼該不該刪除。3.2 Java Doc表明類、域和方法等的意義和用法等的注釋,要以javadoc的方式來寫。Java Doc是個(gè)類的使用者來看的,主要介紹 是什么,怎么用等信息。凡是類的使用者需要知道,都要用Java Doc 來寫。非Java Doc的注釋,往往是個(gè)代碼的維護(hù)者看的,著重告述讀者為什么這樣寫,如何修改,注意什么問題等。 如下:/* This is a class c
19、omment*/public class TestClass /* This is a field comment*/public String name;/* This is a method comment*/public void call() 3.3 塊級別注釋3.3.1 塊級別注釋,單行時(shí)用 /, 多行時(shí)用 /* . */。/public int age;/*public int setName(String strName)name=strName;return 1;*/3.3.2 較短的代碼塊用空行表示注釋作用域3.3.3 較長的代碼塊要用/*- start: -*/和/*- e
20、nd: -*/包圍如:/*-start: 訂單處理 - */取得daoOrderDao dao = Factory.getDao("OrderDao");/* 查詢訂單 */Order order = dao.findById(456);/更新訂單order.setUserName("uu");order.setPassword("pass");order.setPrice("ddd");orderDao.save(order);/*-end: 訂單處理 - */3.3.4 可以考慮使用大括號來表示注釋范圍使用大括
21、號表示注釋作用范圍的例子:/*-訂單處理 - */取得daoOrderDao dao = Factory.getDao("OrderDao");/* 查詢訂單 */Order order = dao.findById(456);/更新訂單order.setUserName("uu");order.setPassword("pass");order.setPrice("ddd");orderDao.save(order);3.4 行內(nèi)注釋行內(nèi)注釋用 / 寫在行尾public String name; /姓名4 最佳實(shí)
22、踐和禁忌4.1 每次保存的時(shí)候,都讓你的代碼是最美的程序員都是懶惰的,不要想著等我完成了功能,再來優(yōu)化代碼的格式和結(jié)構(gòu),等真的把功能完成,很少有人會(huì)再愿意回頭調(diào)整代碼。4.2 使用log而不是System.out.println()log可以設(shè)定級別,可以控制輸出到哪里,容易區(qū)分是在代碼的什么地方打印的,而System.out.print則不行。而且,System.out.print的速度很慢。所以,除非是有意的,否則,都要用log。至少在提交到svn之前把System.out.print換成log。4.3 每個(gè)if while for等語句,都不要省略大括號看下面的代碼:if (a >
23、 b)a+;如果在以后維護(hù)的時(shí)候,需要在a > b 時(shí),把b+,一步小心就會(huì)寫成:if (a > b)a+;b+;這樣就錯(cuò)了,因?yàn)闊o論a和b是什么關(guān)系,b+都會(huì)執(zhí)行。 如果一開始就這樣寫:if (a > b) a+;相信沒有哪個(gè)笨蛋會(huì)把b+添加錯(cuò)的。而且,這個(gè)大括號使作用范圍更明顯,尤其是后面那行很長要折行時(shí)。4.4 善用TODO:在代碼中加入 /TODO: ,大部分的ide都會(huì)幫你提示,讓你知道你還有什么事沒有做。比如:if (order.isPaid() /TODO: 更新訂單4.5 在需要留空的地方放一個(gè)空語句或注釋,告述讀者,你是故意的比如:if (!exists(o
24、rder) ;或:if (!exists(order) /nothing to do4.6 不要再對boolean值做true false判斷比如:if (order.isPaid() = true) / Do something here不如寫成:if (order.isPaid() /Do something here后者讀起來就很是 if order is paid, . 要比 if order's isPaid method returns true, 更容易理解4.7 減少代碼嵌套層次代碼嵌套層次達(dá)3層以上時(shí),一般人理解起來都會(huì)困難。下面的代碼是一個(gè)簡單的例子:public
25、void demo(int a, int b, int c) if (a > b) if (b > c) doJobA(); else if (b < c) doJobB() else if (b > c) if (a < c) doJobC();減少嵌套的方法有很多:· 合并條件· 利用 return 以省略后面的else· 利用子方法比如上例,合并條件后成為:public void demo(int a, int b, int c) if (a > b && b > c) doJobA();if (a
26、> b && c > b) doJobB();if (a <= b && c < b && a < c) doJobC();如果利用return 則成為:public void demo(int a, int b, int c) if (a > b) if (b > c) doJobA();return;doJobB()return;if (b > c) if (a < c) doJobC();利用子方法,就是將嵌套的程序提取出來放到另外的方法里。4.8 程序職責(zé)單一關(guān)注點(diǎn)分離是軟件開發(fā)的真理
27、。人類自所以能夠完成復(fù)雜的工作,就是因?yàn)槿祟惸軌驅(qū)⒐ぷ鞣纸獾捷^小級別的任務(wù)上,在做每個(gè)任務(wù)時(shí)關(guān)注更少的東西。讓程序單元的職責(zé)單一,可以使你在編寫這段程序時(shí)關(guān)注更少的東西,從而降低難度,減少出錯(cuò)。4.9 變量的聲明,初始化和被使用盡量放到一起比方說如下代碼:int orderNum= getOrderNum();/do something withou orderNum herecall(orderNum);上例中的注釋處代表了一段和orderNum不相關(guān)的代碼。orderNum的聲明和初始化離被使用的地方相隔了很多行的代碼,這樣做不好,不如這樣:/do something withou ord
28、erNum hereint orderNum= getOrderNum();call(orderNum);4.10 縮小變量的作用域能用局部變量的,不要使用實(shí)例變量,能用實(shí)例變量的,不要使用類變量。變量的生存期越短,以為著它被誤用的機(jī)會(huì)越小,同一時(shí)刻程序員要關(guān)注的變量的狀態(tài)越少。實(shí)例變量和類變量默認(rèn)都不是線程安全的,局部變量是線程安全的。比如如下代碼:public class OrderPayActionprivate Order order;public void doAction() order = orderDao.findOrder();doJob1();doJob2();privat
29、e void doJob1() doSomething(order);private void doJob2() doOtherThing(order);上例中order只不過擔(dān)當(dāng)了在方法間傳遞參數(shù)之用,用下面的方法更好:public class OrderPayActionpublic void doAction() order = orderDao.findOrder();doJob1(order);doJob2(order);private void doJob1(Order order) doSomething(order);private void doJob2(Order orde
30、r) doOtherThing(order);4.11 盡量不要用參數(shù)來帶回方法運(yùn)算結(jié)果比如:public void calculate(Order order) int result = 0;/do lots of computing and store it in the resultorder.setResult(result);public void action() order = orderDao.findOrder();calculate(order);/ do lots of things about order例子中calculate方法通過傳入的order對象來存儲結(jié)果,
31、不如如下寫:public int calculate(Order order) int result = 0;/do lots of computing and store it in the resultreturn result;public void action() order = orderDao.findOrder();order.setResult(calculate(order);/ do lots of things about order二、 數(shù)據(jù)庫表及字段命名規(guī)范1.數(shù)據(jù)庫表命名規(guī)范:(1)表名前應(yīng)該加上前綴,表的前綴一個(gè)用系統(tǒng)或模塊的英文名稱縮寫,表名前綴和所有單詞全部
32、小寫。oa_mess_lmessage(2)數(shù)據(jù)庫表名應(yīng)該有意義,并且易于理解,最好使用可以表達(dá)功能的英文單詞或縮寫,如果用英文單詞表示,建議使用完整的英文單詞。(3)表名不可以太長,最好不要超過3個(gè)英文單詞長度(22個(gè)字母)。(4)在數(shù)據(jù)庫表命名時(shí)應(yīng)該用英文單詞的單數(shù)形式,如員工表命名:應(yīng)該為employee而不是employees .(5)如果是后臺表命名時(shí)應(yīng)該在表名基礎(chǔ)上加上后綴_b(back 首字母 )(6)在表創(chuàng)建完成前,應(yīng)該為表添加表的注釋。2.表字段命名規(guī)范:(1)數(shù)據(jù)庫表字段應(yīng)該是有意義而且易于理解的,最好是能夠表達(dá)字段含義的英文字母(有人認(rèn)為如果用英文單詞作為字段,因?yàn)榉g工
33、具不同,而字段不統(tǒng)一建議使用漢語拼音首字母縮寫;有人認(rèn)為用漢語拼音縮寫看起來不直觀,老半天也不知道到底這個(gè)字段是干什么的)(2)系統(tǒng)中所有屬于內(nèi)碼,即僅用于標(biāo)識唯一性和程序內(nèi)部用到的標(biāo)識性字段,字段名稱建議取為 ID ,采用類型為整型或長整型.(3)系統(tǒng)中屬于是業(yè)務(wù)內(nèi)的編號字段,代表一定業(yè)務(wù)信息,建議字段命名為code , 如工作單編號wf_code .(4) 不要在數(shù)據(jù)庫表字段(列名)中包含數(shù)據(jù)類型,如:datetime (5)不要在數(shù)據(jù)庫表字段(列名)命名時(shí)重復(fù)表名,可以使用表名首字母(不包含數(shù)據(jù)庫表名前綴)注意:不要在數(shù)據(jù)庫表字段(列名)命名時(shí)不建議使用數(shù)據(jù)庫關(guān)鍵字,如:name,tim
34、e ,datetime password 等3.表設(shè)計(jì)規(guī)范:(1)所有字段在設(shè)計(jì)時(shí),除以下數(shù)據(jù)類型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必須有默認(rèn)值。字符型的默認(rèn)值為一個(gè)空字符值串;數(shù)值型的默認(rèn)值為數(shù)值0;邏輯型的默認(rèn)值為數(shù)值0;其中:系統(tǒng)中所有邏輯型中數(shù)值0表示為“假”;數(shù)值1表示為“真”。datetime、smalldatetime類型的字段沒有默認(rèn)值,必須為NULL。(2)當(dāng)字段定義為字符串形時(shí)建議使用varchar而不用nvarchar。注
35、:在MySQL5.0以上的版本中,varchar數(shù)據(jù)類型的長度支持到了65535,也就是說可以存放65532個(gè)字節(jié)的數(shù)據(jù),起始位和結(jié)束位占去了3個(gè)字節(jié)。(3)建議在大多數(shù)表中(如工作單),應(yīng)都有以下字段:字段名說明類型默認(rèn)值CreatorID創(chuàng)建者int默認(rèn)值為0CreatedTime創(chuàng)建時(shí)間Datetime默認(rèn)值為NULL(4)字段的描述a.字段必須填寫描述信息(注釋)b.盡量遵守第三范式的標(biāo)準(zhǔn)(3NF)表內(nèi)的每一個(gè)值只能被表達(dá)一次(列名不重復(fù))表內(nèi)的每一行都應(yīng)當(dāng)被唯一的標(biāo)示(標(biāo)識唯一性,如自動(dòng)增長主鍵)表內(nèi)不應(yīng)該存儲依賴于其他鍵的非鍵信息(5)加索引規(guī)則a.表建好后數(shù)據(jù)庫自動(dòng)為表生成一個(gè)索引(為自動(dòng)增長的列生成唯一索引),如果在對這列添加索引,數(shù)據(jù)庫會(huì)給一個(gè)警告,內(nèi)容大概是,已經(jīng)為這列添加了索引,建議修改索引名稱和自動(dòng)增長列名保持一致,為了方便使用。b.如果在添加索引時(shí),建議索引名稱和數(shù)據(jù)庫列名保持一致,為了方便使用c.如果字段事實(shí)上是與其它表的關(guān)鍵字相關(guān)聯(lián)而未設(shè)計(jì)為外鍵引用,需建索引。d.如果字段與其它表的字段相關(guān)聯(lián),需建索引。e.如果字段需做模糊查詢之外的條件查詢,需建索引。f.除了主關(guān)鍵字允許建立簇索引外,其它字段所建索引必須
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《倉庫現(xiàn)場管理》課件
- 《倉庫庫存管理系統(tǒng)》課件
- 《小學(xué)細(xì)節(jié)描寫》課件
- 單位管理制度集粹選集員工管理篇
- 單位管理制度合并匯編【職員管理】
- 四川省南充市重點(diǎn)高中2024-2025學(xué)年高三上學(xué)期12月月考地理試卷含答案
- 單位管理制度分享合集職員管理篇十篇
- 單位管理制度范文大合集【人事管理】十篇
- 單位管理制度呈現(xiàn)大全職工管理篇十篇
- 《運(yùn)算律》教案(20篇)
- 2024年時(shí)事政治試題【有答案】
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識
- MT 285-1992縫管錨桿
- 水資源管理培訓(xùn)材料課件
- SCA自動(dòng)涂膠系統(tǒng)培訓(xùn)講義
- 促銷活動(dòng)方案(共29頁).ppt
- 農(nóng)民專業(yè)合作社財(cái)務(wù)報(bào)表(三張表)
- 培訓(xùn)準(zhǔn)備工作清單
- 沉井工程檢驗(yàn)批全套【精選文檔】
- 貝類增養(yǎng)殖考試資料
- 旅游專業(yè)旅游概論試題有答案
評論
0/150
提交評論