我想做一個生成代碼的輔助工具,用以輔助程序員的工作,最大限度減少重復勞動.
現在想到的features有:
1.由數據庫中的表生成數據訪問層
2.根據表生成簡單的數據錄入、修改和查詢的Form。
3.根據表生成insert, select, delete, update sql語句.
3.根據表生成insert, select, delete, update 的存儲過程.因為這些都是簡單的重復勞動。
同時我想大家提供以下意見:
1。大家認為還有什麼是簡單的重復勞動的代碼希望自動生成?
2。生成數據訪問層,大家認為以哪個框架為藍本好?

解决方案 »

  1.   

    用CASE工具不就可以吗?有必要再做吗?真要做的话还是挺麻烦的,是否通用是个问题,考虑是否周全也是个问题!
      

  2.   

    有人已经做出,包括生成界面部分,动态创建事件等功能,是用C#开发的,有delphi,java,c##,vb.net各种版本,公司已经大面积使用,将所有软件重新编了一回,我也没有办法拿到源码,估计不可能发布,他用的是第二种方法,开发用了大约两至三个月时间
      

  3.   

    楼主已经做出来了,大家就看看吧,说那么多也没用,楼主没做之前说还差不多。
    [email protected] 学习学习
      

  4.   

    申明。暫時不準備生成完整的應用程序,只希望把重復性的、簡單的編碼工作
    減少,能減就減,我想做的只是一個輔助性工具(暫時)。大家想想,難道平時沒有一些編碼工作是重復性的嗎?to  juliens(星星球愛思纯^_^) :
    有什麼比較好的case工個介紹一下?我用過的有modelmaker, bold。如果你指的是
    modelmaker,那麼功能上跟我計劃中的程序沒有重疊。如果指的是bold,那真的用
    不上,因為bold實太強了,可性,沒有流行起來。致于rose,together之類的強大的
    工具,也總有一些遗漏.不過,因為delphi本身的超強RAD特性,這種代碼生成工具不太吃香。如果真不行,就做java或c#的吧。
      

  5.   

    讲容易做就难度很大了http://lysoft.7u7.net
      

  6.   

    to  delphi_wo(智慧),還沒做呢.大家提意見:
    可能會先做.net的,以ms petshop sample為藍本.
      

  7.   

    to ffwin, 請問這個是什麼軟件?
      

  8.   

    大家好,謝謝大家發言.
    我計劃中的軟件是基于模板的,只要設計好各種各樣的模板,就可以生成采用不
    同framework的不同語言的程序.
    第一步準備做的是生成一個和ms petshop的架構類似的一個完整的asp.net+c#的
    web application,包括UI, BLL, DAL, IDAL, DAL Factory, Model.其中為第個
    table/view/stored procedure生成的UI包括可選的錄入/查詢/修改/刪除的功能,且
    用戶將能夠很容易的更換UI的風格,因為這些CRUD的功能會被生成組件.
    第二步做基于struts 的java web application.現在正在開始設計數據文件,步聚為:
    1.設計數據文件
    2.設計模板
    3.開發UI3.設計
      

  9.   

    生成數據訪問層,大家認為以哪個框架為藍本好?
    你要是自己用还可以,要是发布软件,數據訪問層的代码应该交给用户脚本的,
    一涉及到和UI等end user打交道的东西,你应该写一个支持用户设计(看起来象设计期),而你需要好好规划你运行期的架构以上建议而已,呵呵
      

  10.   

    to gemouzhi(gemouzhi),
    首先謝謝你的建議.
    "數據訪問層的代码应该交给用户脚本的"是什麼意思? 數據訪問層的代码生成後是可供用戶修改的.致於設計ui,會盡量提供選項,比如選什麼風格,編輯控件用textbox還是textarea, 還是
    select(即combobox),等等.但不可能做成像vs.net或dw一樣的設計界面,這些後期的
    工作用戶可以在vs.net或dw中完成.
      

  11.   

    哦sorry,你是不是准备做一个辅助工具,而不是自己开发工具,是吧?
    要是做D的辅助工具当然不用支持脚本。我开始理解你要单独开发环境,
    呵呵我觉的那样更过瘾一些,界面结合HANDLE(就是那个韩国人开发的)+脚本 ,
      

  12.   

    以下是生成的c#代碼之部分:///////////////////////////////////////////////////////////////////////////////
    //This file was generated by Asp.Net Wizard
    //Powered by EYSoft Technology Limited
    //Website: http://www.eysoft.com
    ///////////////////////////////////////////////////////////////////////////////using System;namespace app.Model
    {
        /// <summary>
        /// Business entity of Products.
        /// </summary>
        
        [Serializable]
        public class ProductsInfo: BaseClass
        {
            // Private member variables
            private Int32 m_ProductID;
            private string m_ProductName;
            private Int32 m_SupplierID;
            private Int32 m_CategoryID;
            private string m_QuantityPerUnit;
            private Decimal m_UnitPrice;
            private Int16 m_UnitsInStock;
            private Int16 m_UnitsOnOrder;
            private Int16 m_ReorderLevel;
            private Boolean m_Discontinued;
            private DateTime m_LastUpdate;
            
            /// <summary>
            /// Constructor without initial values
            /// </summary>
            public ProductsInfo()
            {
            }        
            
            /// <summary>
            /// Constructor with  initial values
            /// </summary>
            public ProductsInfo(
                Int32 _ProductID,
                string _ProductName,
                Int32 _SupplierID,
                Int32 _CategoryID,
                string _QuantityPerUnit,
                Decimal _UnitPrice,
                Int16 _UnitsInStock,
                Int16 _UnitsOnOrder,
                Int16 _ReorderLevel,
                Boolean _Discontinued,
                DateTime _LastUpdate)
            {            
                this.m_ProductID = _ProductID;            
                this.m_ProductName = _ProductName;            
                this.m_SupplierID = _SupplierID;            
                this.m_CategoryID = _CategoryID;            
                this.m_QuantityPerUnit = _QuantityPerUnit;            
                this.m_UnitPrice = _UnitPrice;            
                this.m_UnitsInStock = _UnitsInStock;            
                this.m_UnitsOnOrder = _UnitsOnOrder;            
                this.m_ReorderLevel = _ReorderLevel;            
                this.m_Discontinued = _Discontinued;            
                this.m_LastUpdate = _LastUpdate;
            }
            
            // Properties
            public Int32 ProductID
            {
                get { return m_ProductID; }
                set { m_ProductID = value; }
            }
            
            public string ProductName
            {
                get { return m_ProductName; }
                set { m_ProductName = value; }
            }
            
            public Int32 SupplierID
            {
                get { return m_SupplierID; }
                set { m_SupplierID = value; }
            }
            
            public Int32 CategoryID
            {
                get { return m_CategoryID; }
                set { m_CategoryID = value; }
            }
            
            public string QuantityPerUnit
            {
                get { return m_QuantityPerUnit; }
                set { m_QuantityPerUnit = value; }
            }
            
            public Decimal UnitPrice
            {
                get { return m_UnitPrice; }
                set { m_UnitPrice = value; }
            }
            
            public Int16 UnitsInStock
            {
                get { return m_UnitsInStock; }
                set { m_UnitsInStock = value; }
            }
            
            public Int16 UnitsOnOrder
            {
                get { return m_UnitsOnOrder; }
                set { m_UnitsOnOrder = value; }
            }
            
            public Int16 ReorderLevel
            {
                get { return m_ReorderLevel; }
                set { m_ReorderLevel = value; }
            }
            
            public Boolean Discontinued
            {
                get { return m_Discontinued; }
                set { m_Discontinued = value; }
            }
            
            public DateTime LastUpdate
            {
                get { return m_LastUpdate; }
                set { m_LastUpdate = value; }
            }
            
        }
    }
      

  13.   

    还有c#中有别人写的相当好的一个数据集操作的class,我以前用过,你可以参考。
      

  14.   

    to  gemouzhi(gemouzhi) ,可否提供更詳細的資料?我準備采用microsoft application blocks for .net, data access.
      

  15.   

    這段時間因為學習UML和RUP,所以項目暫停了.
      

  16.   

    经过这段时间的UML实践,加上对国外丰富的这类软件的了解,发现没有必要把这个项目做下去,虽然完成了6、7成了。不过,通过这个项目petshop的结构、对xml,对xslt,有了比较深刻的了解。