代码组织结构
来源:互联网 发布:java破解游戏手机乐园 编辑:程序博客网 时间:2024/05/01 04:42
一个项目的规范包括:
- 组织规范:目录命名、目录组织、文件命名、编译方法
- 代码规范:命名、缩进、可用语法、可选库...
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 文件会在导入时被执行。
- 代码组织结构
- 代码组织结构
- 代码组织结构划分:
- JS代码组织结构杂谈
- Android代码的组织结构
- Extjs MVC模式前台代码组织结构
- iOS模型和代码组织结构
- cocos2d小型工程的代码组织结构
- 代码工程目录组织结构之我见
- 组织结构
- 组织结构
- Android小项目之二 代码的组织结构
- Caffe源码解读(一):代码组织结构
- 组织结构树形结构
- 主要组织结构
- Shark数据模型--组织结构
- lucene(-).....包组织结构
- Linux源代码组织结构
- 阿斯顿发斯蒂芬
- 企业Web应用创新实验
- java常用排序算法
- iphone mac live555 编译
- 2013年华为成都机考第二题 代码转自xiaojiang0805
- 代码组织结构
- irisskin 给登录窗体修改皮肤,实例化主窗体时报“未将对象引用到对象的实例”(皮肤控件有问题)
- 页面边框
- windows下mingw的复制粘贴
- 撒旦法山东龙口减肥阿斯顿浪费
- FM 原创街舞
- Objective-C的动态特性
- Matlab 批量导入txt文件
- Maven 手动安装JAR包 到本地仓库