代码组织结构

来源:互联网 发布:java破解游戏手机乐园 编辑:程序博客网 时间:2024/05/01 04:42

一个项目的规范包括:

  1. 组织规范:目录命名、目录组织、文件命名、编译方法
  2. 代码规范:命名、缩进、可用语法、可选库...

 

1、Android项目组织结构

一级目录:

  src           //源码  gen           //资源索引文件R.java,所有res文件夹下的资源在R.java中都一一生成对应的资源ID  Android 2.x   //Android SDK,API函数库  assets        //引用的外部资源  res           //资源文件,往下又分drawable、layout、values三类文件夹  AndroidManifest.xml   //配置文件:Activity注册、使用到的服务、编码格式、应用的icon、版本号  default.properties    //工程的环境信息

 

二级分析:

1) gen:

gen     --BuildConfig.java    --R.java

 

//BuildConfig.javapublic final class BuildConfig {    public final static boolean DEBUG = true;}
//R.java文件
public final class R {    public static final class attr {    }    public static final class dimen {        public static final int activity_horizontal_margin=0x7f040000;        public static final int activity_vertical_margin=0x7f040001;    }    public static final class drawable {        public static final int ic_launcher=0x7f020002;    }    public static final class id {        public static final int action_settings=0x7f080004;        public static final int btn_start=0x7f080003;    }    public static final class layout {        public static final int activity_main=0x7f030002;    }    public static final class menu {        public static final int main=0x7f070000;    }    public static final class string {        public static final int action_settings=0x7f050001;        public static final int app_name=0x7f050000;        public static final int hello_world=0x7f050002;    }    public static final class style {        public static final int AppBaseTheme=0x7f060000;        public static final int AppTheme=0x7f060001;    }}

2)res

          --drawable-hdpi      //高分辨率屏幕图片           --drawable-mdpi      //中分辨率           --drawable-ldpi      //低           --layout             //各activity.xml文件           --values               ----strings.xml   //字符串变量                 ----dimens.xml    //屏幕尺寸相关变量定义                 ----styles.xml    //主题样式定义,可被替换values-vXX中的替换


 3)manifest.xml

<?xml version="1.0" encoding="utf-8"?>    <manifest>        <!-- 基本配置 -->      <uses-permission />      <permission />      <permission-tree />      <permission-group />      <instrumentation />      <uses-sdk />      <uses-configuration />      <uses-feature />      <supports-screens />      <compatible-screens />      <supports-gl-texture />            <!-- 应用配置 -->      <application>                    <!-- Activity 配置 -->          <activity>              <intent-filter>                  <action />                  <category />                  <data />              </intent-filter>              <meta-data />          </activity>                    <activity-alias>              <intent-filter> . . . </intent-filter>              <meta-data />          </activity-alias>                    <!-- Service 配置 -->          <service>              <intent-filter> . . . </intent-filter>              <meta-data/>          </service>                    <!-- Receiver 配置 -->          <receiver>              <intent-filter> . . . </intent-filter>              <meta-data />          </receiver>                    <!-- Provider 配置 -->          <provider>              <grant-uri-permission />              <meta-data />          </provider>                    <!-- 所需类库配置 -->          <uses-library />        </application>    </manifest>  

摘抄自:http://blog.chinaunix.net/uid-9185047-id-3460344.html   (详细解释参考)

2、Python Tornado项目代码组织结构

 2.1组织结构

通常Tornado Web项目的代码组织:model         //M : 模型py文件templates     //V :视图模板html文件handlers      //C : 控制器handler处理py文件static        //静态资源文件  --css  --img  --js


项目大了,涉及到前后台,以及多个应用平台了,可以扩展

第一层:根目录下,按前后台分两个独立的项目

-front         //前台展示 项目

-manage    //后台管理 项目

第二层:front项目下

-front

----pc               //web入口与渲染的处理handler

----app             //app入口与渲染的处理handler

----controler     //C层,实际逻辑处理

----model         //M层,数据库操作,(单纯的sql操作,不要做其他任何处理)

----lib               //常用库,如log.py,mail.py

----template     // V层,模板

----static          //静态资源

 

 

 

2.2python的 __init__.py 文件

__init__.py 控制着包的导入行为。假如 __init__.py 为空,那么仅仅导入包是什么都做不了的。

>>> import Package1
>>> Package1.Module1
Traceback (most recent call last): File "<pyshell#1>", line 1, in ? Package1.Module1
AttributeError: 'module' object has no attribute 'Module1'

我们需要在 __init__.py 里把 Module1 预先导入:

#文件 __init__.py
import Module1

测试:

>>> import Package1
>>> Package1.Module1
<module 'Package1.Module1' from 'Module.pyc'>

__init__.py 中还有一个重要的变量,叫做 __all__。我们有时会使出一招“全部导入”,也就是这样:

from PackageName import *

这时 import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:

#文件 __init__.py
__all__ = ['Module1', 'Module2', 'Package2']

测试:

>>> from Package1 import *
>>> Module2
<module 'Package1.Module2' from 'Module.pyc'>

__init__.py 文件会在导入时被执行。


 

原创粉丝点击