代码组织结构

一个项目的规范包括:

  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.java
public 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 文件会在导入时被执行。

 

    原文作者:大漠孤舟
    原文地址: https://blog.csdn.net/wykgf/article/details/11812789
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞