91789
分类

历史浏览

{{ badge.badge_name }}
{{ item.brand_name }} {{ item.group_num + __(" Options") }}
{{ item.item_title }}
{{ item.rank.category_name }} {{ $isZh ? ' ' + item.rank.rank_name +' No.'+ item.rank.rank_num : '#'+item.rank.rank_num + ' ' + item.rank.rank_name }} {{ item.rank.category_name }}
{{ formatNumber(visualViewRate(item)) }} ({{ item.comment.comment_count > 0 ? item.comment.comment_count : __("Be the first!") }})
· {{ viewedItemSaleInfo(item) }}

{{ currency }}{{ priceFormat(item.price.shop_price) }} {{ currency }}{{ priceFormat(item.price.del_price) }}

{{ item.bundle }}
已加入购物车

切换配送区域

不同区域的库存和配送时效可能存在差异.

历史邮编

{{email ? __('Got it!') : __('Restock Alert')}}

我们将在商品到货后第一时间通知你。

取消
Yami
京东图书

图灵程序设计丛书:C++ API设计

{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ item.valid_price }}
{{ buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start") }}
商品描述
展开全部描述
编辑推荐

如何构建高效、健壮、稳定且可扩展的优质API?对于这一软件工程上的难题,MartinReddy凭借长期的从业经验,对优质API所应具备的各要素进行了全面分析,针对API的不同风格及模式,以及大型长期项目的内在要求,给出了种种最佳设计策略,从而对API设计过程的规范性及可持续性作出了重大的贡献。
内容简介

现代软件开发中的一大难题就是如何编写优质的API。API负责为某个组件提供逻辑接口并隐藏该模块的内部细节。多数程序员依靠的是经验和冒险,从而很难达到健壮、高效、稳定、可扩展性强的要求。Martin Reddy博士在自己多年经验基础之上,对于不同API风格与模式,总结出了API设计的种种最佳策略,着重针对大规模长期开发项目,辅以翔实的代码范例,从而有助于设计决策的成功实施,以及软件项目的健壮性及稳定性的实现。
《图灵程序设计丛书:C++ API设计》主要内容:
API简介及其特点
API的一些设计模式及惯用法
影响API的设计的一些C++特性
把控API的风格与性能
版本控制与文档化的实现
各种优秀的测试方法
如何创建脚本绑定,以便API能被诸如Ruby和Python等语言调用
可扩展性API的基本实现方式
类库的编译器实现

作者简介

Martin Reddy,博士是软件行业的一名老兵,有着15年以上的从业经验,共撰写过40多篇论文,拥有3项软件专利,并与他人合著了Level of Detail for 3D Graphics。另外,他还是ACM以及IEEE的会员。
早年,他曾在SRI International供职5年,主要从事分布式三维地形可视化技术方面的工作,他成功创建了在Web上描述3D地球空间信息模型的ISO标准,并且还连续两年被选为Web3D协会的会长。
他曾在Pixar动画工作室工作过6年,担任内部动画系统的首席工程师,设计并实现了很多高性能API,这些API在一些奥斯卡获奖及提名影片的制作中都发挥了关键作用,这些影片有《海底总动员》、《超人总动员》、《赛车总动员》、《料理鼠王》,以及《机器人总动员》等。
他还开办了一家咨询公司Code Reddy,为各家软件公司提供技术咨询,主要客户有Linden Lab和Planet 9 Studios,为大型在线3D虚拟世界《第二人生》设计了API并改善了其基本架构。
现在他担任ToyTalk公司的首席技术官。
精彩书评

“借助在大规模、协作性软件项目方面的经验,Martin Reddy介绍了对个体开发者和开发组织都有实际价值的模式与实践。《C++ API设计》探索了常常被忽视的技术性和非技术性问题,有助于推动成功的设计决策,从而产生高质量的、健壮的而且可以长期使用的API。”
——Eric Gregory,Pixar动画工作室软件架构师

“《C++ API设计》面向中高级C++程序员,可以辅助读者构建实用、健壮的API,并针对那些给下游软件开发人员开发系统软件的项目,给予了一些非常切中肯綮的指导。”
——Book News, Reference & Research

目录

第1章API简介
1.1 什么是API
1.1.1 契约和承包人
1.1.2 C++中的API
1.2 API设计上有什么不同
1.3 为什么使用API
1.3.1 更健壮的代码
1.3.2 代码复用
1.3.3 并行开发
1.4 何时应当避免使用API
1.5 API示例
1.5.1 API层次
1.5.2 真实示例
1.6 文件格式和网络协议
1.7 关于本书

第2章特征
2.1 问题域建模
2.1.1 提供良好的抽象
2.1.2 关键对象的建模
2.2 隐藏实现细节
2.2.1 物理隐藏:声明与定义
2.2.2 逻辑隐藏:封装
2.2.3 隐藏成员变量
2.2.4 隐藏实现方法
2.2.5 隐藏实现类
2.3 最小完备性
2.3.1 不要过度承诺
2.3.2 谨慎添加虚函数
2.3.3 便捷API
2.4 易用性
2.4.1 可发现性
2.4.2 不易误用
2.4.3 一致性
2.4.4 正交
2.4.5 健壮的资源分配
2.4.6 平台独立
2.5 松耦合
2.5.1 仅通过名字耦合
2.5.2 降低类耦合
2.5.3 刻意的冗余
2.5.4 管理器类
2.5.5 回调、观察者和通知
2.6 稳定的、文档详细且经过测试的API

第3章模式
3.1 Pimpl惯用法
3.1.1 使用Pimpl
3.1.2 复制语义
3.1.3 Pimpl与智能指针
3.1.4 Pimpl的优点
3.1.5 Pimpl的缺点
3.1.6 C语言的不透明指针
3.2 单例
3.2.1 在C++中实现单例
3.2.2 使单例线程安全
3.2.3 单例与依赖注入
3.2.4 单例与单一状态
3.2.5 单例与会话状态
3.3 工厂模式
3.3.1 抽象基类
3.3.2 工厂示例
3.3.3 扩展工厂示例
3.4 API包装器模式
3.4.1 代理模式
3.4.2 适配器模式
3.4.3 外观模式
3.5 观察者模式
3.5.1 MVC架构
3.5.2 实现观察者模式
3.5.3 推与拉观察者

第4章设计
4.1 良好设计的例子
4.1.1 积累技术债
4.1.2 偿还技术债
4.1.3 为长期而设计
4.2 收集功能性需求
4.2.1 什么是功能性需求
4.2.2 功能性需求举例
4.2.3 维护需求
4.3 创建用例
4.3.1 开发用例
4.3.2 用例模板
4.3.3 编写高质量用例
4.3.4 需求与敏捷开发
4.4 API设计的元素
4.5 架构设计
4.5.1 架构的开发
4.5.2 架构的约束
4.5.3 识别主要抽象
4.5.4 创造关键对象
4.5.5 架构模式
4.5.6 架构的交流
4.6 类的设计
4.6.1 面向对象概念
4.6.2 类设计选项
4.6.3 使用继承
4.6.4 Liskov替换原则
4.6.5 开放?封闭原则
4.6.6 迪米特法则
4.6.7 类的命名
4.7 函数设计
4.7.1 函数设计选项
4.7.2 函数命名
4.7.3 函数参数
4.7.4 错误处理

第5章风格
5.1 纯C API
5.1.1 ANSI C特性
5.1.2 ANSI C API的优点
5.1.3 使用ANSI C编写API
5.1.4 从C++中调用C函数
5.1.5 案例研究:FMOD C API
5.2 面向对象的C++ API
5.2.1 面向对象API的优点
5.2.2 面向对象API的缺点
5.2.3 案例研究:FMOD C++ API
5.3 基于模板的API
5.3.1 基于模板的API示例
5.3.2 模板与宏
5.3.3 基于模板的API的优点
5.3.4 基于模板的API的缺点
5.4 数据驱动型API
5.4.1 数据驱动型Web服务
5.4.2 数据驱动型API的优点
5.4.3 数据驱动API的缺点
5.4.4 支持可变参数列表
5.4.5 案例研究:FMOD数据驱动型API

第6章C++用法
6.1 命名空间
6.2 构造函数和赋值
6.2.1 控制编译器生成的函数
6.2.2 定义构造函数和赋值操作符
6.2.3 explicit关键字
6.3 const正确性
6.3.1 方法的const正确性
6.3.2 参数的const正确性
6.3.3 返回值的const正确性
6.4 模板
6.4.1 模板术语
6.4.2 隐式实例化API设计
6.4.3 显式实例化API设计
6.5 操作符重载
6.5.1 可重载的操作符
6.5.2 自由操作符与成员操作符
6.5.3 为类添加操作符
6.5.4 操作符语法
6.5.5 转换操作符
6.6 函数参数
6.6.1 指针与引用参数
6.6.2 默认参数
6.7 避免使用#define定义常量
6.8 避免使用友元
6.9 导出符号
6.10 编码规范

第7章性能
7.1 通过const引用传递输入参数
7.2 最小化#include依赖
7.2.1 避免"无所不包型"头文件
7.2.2 前置声明
7.2.3 冗余的#include警戒语句
7.3 声明常量
7.4 初始化列表
7.5 内存优化
7.6 除非需要,勿用内联
7.7 写时复制
7.8 迭代元素
7.8.1 迭代器
7.8.2 随机访问
7.8.3 数组引用
7.9 性能分析
7.9.1 时效性分析
7.9.2 基于内存的分析
7.9.3 多线程分析

第8章版本控制
8.1 版本号
8.1.1 版本号的意义
8.1.2 小众的编号方案
8.1.3 提供API的版本信息
8.2 软件分支策略
8.2.1 分支策略
8.2.2 分支方针
8.2.3 API和并行分支
8.2.4 文件格式和并行发布产品
8.3 API的生命周期
8.4 兼容性级别
8.4.1 向后兼容性
8.4.2 功能兼容性
8.4.3 源代码兼容性
8.4.4 二进制兼容性
8.4.5 向前兼容性
8.5 怎样维护向后兼容性
8.5.1 添加功能
8.5.2 修改功能
8.5.3 弃用功能
8.5.4 移除功能
8.6 API审查
8.6.1 API审查的目的
8.6.2 API预发布审查
8.6.3 API预提交审查

第9章文档
9.1 编写文档的理由
9.1.1 定义行为
9.1.2 为接口契约编写文档
9.1.3 告知行为的改变
9.1.4 文档涉及的内容
9.2 文档的类型
9.2.1 自动生成的API文档
9.2.2 概述文档
9.2.3 示例和教程
9.2.4 发布说明
9.2.5 授权信息
9.3 文档可用性
9.4 使用Doxygen
9.4.1 配置文件
9.4.2 注释风格和命令
9.4.3 API注释
9.4.4 文件注释
9.4.5 类注释
9.4.6 方法注释
9.4.7 枚举注释
9.4.8 带有文档的示例头文件

第10章测试
10.1 编写测试的理由
10.2 API测试的类型
10.2.1 单元测试
10.2.2 集成测试
10.2.3 性能测试
10.3 编写良好的测试
10.3.1 良好测试的特征
10.3.2 测试对象
10.3.3 关注测试工作量
10.3.4 与QA一起工作
10.4 编写可测试的代码
10.4.1 测试驱动开发
10.4.2 桩对象和模拟对象
10.4.3 测试私有代码
10.4.4 使用断言
10.4.5 契约编程
10.4.6 记录并重放功能
10.4.7 支持国际化
10.5 自动化测试工具
10.5.1 自动化测试框架
10.5.2 代码覆盖率
10.5.3 缺陷跟踪系统
10.5.4 持续构建系统

第11章脚本化
11.1 添加脚本绑定
11.1.1 扩充或嵌入
11.1.2 脚本化的优点
11.1.3 语言兼容性问题
11.1.4 跨越语言障碍
11.2 脚本绑定技术
11.2.1 Boost Python
11.2.2 SWIG
11.2.3 Python-SIP
11.2.4 COM自动化
11.2.5 CORBA
11.3 使用Boost Python添加Python绑定
11.3.1 构建Boost Python
11.3.2 使用Boost Python包装C++ API
11.3.3 构造函数
11.3.4 扩充Python API
11.3.5 C++中的继承
11.3.6 跨语言多态
11.3.7 支持迭代器
11.3.8 综合应用
11.4 使用SWIG添加Ruby绑定
11.4.1 使用SWIG包装C++ API
11.4.2 调整Ruby API
11.4.3 构造函数
11.4.4 扩充Ruby API
11.4.5 C++中的继承
11.4.6 跨语言多态
11.4.7 综合应用

第12章可扩展性
12.1 通过插件扩展
12.1.1 插件模型概览
12.1.2 插件系统设计问题
12.1.3 以C++实现插件
12.1.4 插件API
12.1.5 插件示例
12.1.6 插件管理器
12.1.7 插件版本控制
12.2 通过继承扩展
12.2.1 添加功能
12.2.2 修改功能
12.2.3 继承与STL
12.2.4 继承与枚举
12.2.5 访问者模式
12.2.6 禁止子类化
12.3 通过模板扩展
12.3.1 基于策略的模板
12.3.2 奇特的递归模板模式
附录A 库
参考文献
索引
前言/序言

编写大型C++应用既复杂又棘手,设计健壮、稳定、易用且耐用的可重用C++接口更是难上加难。在这些努力中获得成功的最佳途径就是遵循优秀的应用编程接口(Application Programming Interface,API)设计原则。
API为软件组件提供逻辑接口,同时又隐藏实现该组件所需要的内部细节。它提供模块的高层次抽象,并通过多个应用共享相同的功能,以促成代码复用。
现代软件开发高度依赖于API,从底层应用程序框架到数据格式API,以及图形用户界面(GUI)框架。事实上,常见的软件工程术语,诸如模块化开发、代码复用、组件化、动态链接库(DLL)、软件框架、分布式计算以及面向服务的架构(SOA),都隐含了对高超的API设计技能的需求。
你也许了解一些流行的C和C++ API,比如标准模板库(STL)、Boost、微软Windows API(Win32)、微软基础类库(MFC)、libtiff、libpng、zlib、libxml++、OpenGL、MySQL++、奇趣公司的Qt、wxWidget、GTK+、KDE、SkypeKit、POSIX pthreads、英特尔的线程构建模块(Threading Building Blocks)、Netscape插件API以及Apache模块API。除此之外,Google的许多开源项目也使用C++,在sourceforge.net、bitbucket.org和freshmeat.net网站上也有很多开源的C++代码。
在软件开发中,从桌面程序到移动计算和嵌入式系统,再到Web开发,都能见到上述API的踪影。例如,Mozilla Firefox网页浏览器就是在80多个动态库的基础上构建的,其中每一个动态库都提供了若干个API的实现。
因此,优雅而健壮的API设计对现代软件开发至关重要。它区别于标准应用程序开发的一个重要特征,就是对变更管理的巨大需求。众所周知,在软件开发中,变化是一个不可避免的因素。新的需求、功能要求以及错误修复,这些要求导致软件从最初的设计以来要经历一系列从未预料的演变。然而,若API由数百个最终用户应用程序共享,那么变化就将引发巨大的动荡,并最终可能致使客户抛弃该API。因此,良好的API设计的首要目标是:在为客户提供所需功能的前提下,使新发布的API对客户代码造成的影响最小,理想状况下应该是零影响。
本书的价值
如果有其他软件工程人员需要依赖你所编写的C++代码,那么你就是API的设计者,本书就是为你而编写的。
接口是你编写的最重要的代码,因为如果接口出现问题,那么修复它的代价比修复实现部分的代价要高很多。举例来说,接口的变化要求对所有依赖此接口代码的应用进行更新,相比之下,当客户端应用采用新版本的API时,仅略微更改的实现则可以被透明地、毫不费力地集成。从经济的角度看,设计拙劣的接口会极大缩短代码的生存期。因此,写出高质量的接口是一项必备的工程技能,也是本书的焦点所在。
Michi Henning曾指出,如今API设计比起20年前显得更为重要。因为近年来有更多的API被设计出来,这些API提供更为丰富和复杂的功能,并且被更多的最终用户应用所共享(Henning, 2009)。尽管如此,当前市面上着重介绍C++ API设计的书籍却不多。
需要指出的是,本书并不是一般的C++编程指南——市面上这类优秀书籍已经有很多本了。本书当然会涵盖许多面向对象的设计材料并提供很多有用的C++技巧和窍门,但更侧重清晰地描述C++中模块接口的技巧。因此,我不会深入讨论如何实现接口背后代码的问题,诸如具体的算法选择,或是应用于函数体花括号内代码的最佳实践。
然而,本书将涵盖API开发的整个领域,从最初设计到实现、测试、文档编写、发布、版本控制、维护以及最终弃用。我还会讨论一些特殊的API主题,如创建脚本化API和插件式API。虽然总体上许多主题也和软件开发相关,但这里着重强调API设计。举例来说,当讨论到测试策略时,我将重点介绍自动化的API测试技术,而不会试图囊括最终用户应用的测试技术,如GUI测试、系统测试或人工测试。
我曾领导过若干由多个合作机构共享的研究性代码的API开发,还有奥斯卡获奖影片所使用的内部动画系统API,以及全球上百万用户所使用的开源客户端、服务器API等。本书的内容正是基于以上这些实际经验的,正是这些实践让我明白,高质量API设计是成功的关键所在。因此,本书旨在提供工业强度的API设计技术与策略的实践精华,它们均源自一系列实践经验。
本书读者对象
虽然本书不是C++初学者的指南,我还是竭尽全力使文字更通俗易懂,并且清楚地解释所有的术语和行话。因此,无论你是想提高设计技能掌握C++基础的新手程序员,还是想获得新的专业技能以完善已有才能的高级工程师和软件架构师,本书都具备一定的参考价值。
在写作本书时,我拟定了3类特定的读者群体。
· 在职软件工程师和架构师。正在从事特定API项目的初级和高级开发人员,需要一些如何构建优雅且持久设计的实用建议。
· 技术经理。负责开发API产品的开发经理,以及想深入理解API设计的开发过程和技术问题的产品经理。
· 学生和教学人员。计算机科学和软件工程专业的学生,正在学习如何编程,或者正在寻找总结了全面、大型项目实践经验的软件设计资料的学生。
为什么选用C++来描述API设计
虽然有很多通用API设计方法学(可适用于任何编程语言或编程环境)可以讲,但最终都需要使用一门特定的编程语言来表述。因此了解特定语言的特征以促进规范的API设计是非常必要的。所以,本书专门使用一种语言(C++)描述API设计的问题,而非分散内容使其适用于所有语言。然而,想要使用其他语言(如Java或C#)开发API的读者仍然可以从本书中获得许多通用的深刻见解。本书的直接目标读者是编写并维护API的C++工程师,他们的API要供给其他工程师使用。
目前,C++仍是大型软件项目中使用最广泛的编程语言之一,并且日渐成为注重代码性能项目的首选语言,因此,你可以在自己应用中选用的C和C++的API种类非常多(前面我已经列出一些)。本书重点关注如何使用C++编写优秀的API,并引入了丰富的源代码示例以更好地阐述这些概念。也就是说,本书会涉及一些C++特有的主题,例如模板、封装、继承、命名空间、操作符、const正确性(const correctness)、内存管理、STL的使用、Pimpl惯用法,等等。
另外,在本书出版期间,C++也正经历着巨大的变革。新版的C++规范处于ISO/IEC的标准化进程中。目前,多数C++编译器遵循1998年首次发布的标准,即C++98。随后的标准于2003年发布,修正了前版的几处缺陷。自那时以来,标准委员会一直致力于制定一个重大的新版本规范。在标准被正式批准生效并确定发布日期之前,该版本一直被非正式地称为C++0x。当你读到本书时,新的标准可能已经发布了。但是,在我编写本书的期间,它仍然被称为C++0x。
尽管如此,C++0x已经达到标准化进程的高级阶段,我们可以满怀信心地预言一些新的特性。事实上,一些主流的C++编译器已经开始实现许多建议的新特性。在API设计方面,某些新特性可以用来构建更加优雅和健壮的接口。因此,我一直努力在整本书中强调和解释C++0x中的API设计。所以,本书在未来几年中应该依然具有参考价值。
术语及排版规约
传统上,我们使用术语“用户”(user)表示使用软件应用的人,比如Microsoft Word或者Mozilla Firefox的用户。而在本书所指的API 设计背景下,此术语表示借助API创建应用的软件开发人员。换言之,本书通常提到的是API用户并不代表应用程序用户。与此同时,术语“客户”(client)在这一点上也具有相同的语义。注意术语“客户”除了指代使用API的人之外,还表示调用API函数的其他软件。
虽然有许多文件格式后缀可以用来标识C++源文件和头文件,如.cpp、.cc、.cxx、.h、.hh和.hpp,但本书将统一使用.cpp和.h。本书会交替使用术语“模块”(module)和“组件”(component)表示一对.cpp和.h文件。很明显它们不等价于一个类,因为一个组件或模块可能包含多个类。本书使用术语“库”(library)表示一个物理集合,即组件形成的包。也就是说,库>模块/组件>类。
面向对象编程社区经常使用的术语“方法”(method)并不是严格的C++术语,它源自Smalltalk语言。在C++中与之等价的术语是成员函数(member function),但是也有一些软件工程师喜欢使用更为具体的虚成员函数(virtual member function)。本书并不特别关注这些术语的微小差别,故将交替使用方法和成员函数。同样,虽然在C++中,数据成员(data member)是更准确的表述,但是本书将术语“成员变量”(member variable)视为它的同义词。
考虑到印刷习惯,本书使用等宽字体编排所有源代码示例以及正文中出现的所有关键字。在本书给出的示例中,我习惯使用大写驼峰式命名法(upper camel case)书写所有类和函数的名字,即使用CamelCase而非camelCase或snake_case。不过,我会保留引用的外部代码的大小写形式,如std::for_each()。本书遵循在数据成员名前添加m前缀以及在静态变量前添加s前缀的习惯约定,如mMemberVar、sStaticVar。
提示
本书中,我也会强调各种有关API设计的小提示和关键概念。提供这些标注是为了让你能够快速搜索到想要重读的概念。如果你的时间非常有限,可以只浏览书中的这些小提示,然后阅读提示附近的内容以深入理解你最感兴趣的主题。

规格参数

品牌 京东图书
品牌属地 中国
ISBN 9787115322999
著者 [美]Martin Reddy
出版社 人民邮电出版社
印刷时间 2013-08-01
用纸 胶版纸
包装 平装
出版时间 2013-08-01
页数 380
译者 刘晓娜,臧秀涛,林健
语言 中文
版次 1

免责声明

产品价格、包装、规格等信息如有调整,恕不另行通知。我们尽量做到及时更新产品信息,但请以收到实物为准。使用产品前,请始终阅读产品随附的标签、警告及说明。

查看详情 {{ itemAct.title || '' }}

超值套装

相似商品

{{ item.userActionNumberDesc }}
Yami wechat-share qr code

扫码分享

图灵程序设计丛书:C++ API设计

{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }}
权益价:
{{ itemCurrency }}{{ priceFormat(item.member_price) }}
立享权益
了解更多
后结束促销
后开始秒杀 后结束秒杀
{{ getSeckillDesc(item.seckill_data) }}
{{ __("Pay with Gift Card to get sale price: :itemCurrency:price", {'itemCurrency': itemCurrency, 'price': (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00')}) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) 详情
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}

已下架

当前地址无法配送
已售完
京东图书 销售
送至
{{ __("Ship to United States only") }}
满$69免运费
正品保证
{{ quantity }} {{ instockMsg }} {{ limitText }}
{{ buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start") }}
商品有效期

搭配购买

合计 ${{ priceFormat(totalPrice) }}

已加入购物车

继续逛逛

为你推荐

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

优惠券

{{ coupon.coupon_name_new | formatCurrency }}
领取 已领取 已领完
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
即将过期: {{ formatTime(coupon.use_end_time) }}

分享给好友

取消

亚米礼卡专享价

使用礼卡支付即可获得礼卡专享价

规则说明

礼卡专享价是部分商品拥有的特殊优惠价格;

购买礼卡专享价商品时,若在结算时使用电子礼卡抵扣支付,且礼卡余额足够支付订单中所有礼卡专享价商品的专享价总和,则可以启用礼卡专享价;

不使用礼卡支付,或礼卡余额不满足上一条所述要求时,将无法启用礼卡专享价,按照普通售价计算,但您仍然可以购买这些商品;

在购买礼卡专享价商品时,若余额不足,可以在购物车或结算页中点击“充值”按钮对礼卡进行购买和充值;

商品若拥有礼卡专享价,会显示“专享”的特殊价格标记;

如有疑问,请随时联系客服;

礼卡专享价相关规则最终解释权归亚米所有。

由 亚米 销售

服务保障

Yami 从美国发货,满$49免运费
Yami 无忧退换

配送信息

  • 美国

    标准配送 $5.99(不包含阿拉斯加,夏威夷),最终价满$49免运费

    本地配送$5.99(加州,纽约州,新泽西,麻省和宾夕法尼亚,以上州部分地区);最终价满$49免运费

    两日达(包含阿拉斯加夏威夷)运费$19.99起

退换政策

亚米网希望为我们的客户提供最优秀的售后服务,让所有人都能放心在亚米购物。亚米自营商品在满足退换货条件的情况下,可在收到包裹的30天之内退换商品(食品因商品质量问题7天内可退换;为了确保每位客户都能获得安全和高质量的商品,对于美妆类产品,一经开封或使用即不提供退款或退货服务,质量问题除外;其他特殊商品需联系客服咨询)。
感谢您的理解和支持。

查看详情

由 亚米 销售

亚米电子礼品卡规则说明

若购买时选择自动充值,订单完成后礼卡将自动充值到您的账户中;

若购买时选择发送邮件,订单完成后系统将自动发送卡号和密码到您填写的邮箱;

发送邮件时,任何用户均可使用邮件中的卡号密码进行礼卡充值,请妥善保管邮件信息。

如接收邮件遇到问题,请联系客服处理;

发送邮件时,若礼卡没有被兑换,可以补发邮件。若已经被其他用户兑换,则无法补偿;

亚米网电子礼卡可用于购买自营或第三方商品;

亚米网电子礼卡没有有效期限制,长期有效;

亚米网电子礼卡的金额,可分多次使用;

亚米网电子礼卡业务规则,最终解释权归亚米网所有。

退换政策

已消费的电子礼卡不支持退款。

京东图书 销售

服务保障

Yami 从美国发货,满$49免运费
Yami 无忧退换

配送信息

  • 美国

    标准配送 $5.99(不包含阿拉斯加,夏威夷),最终价满$49免运费

    本地配送$5.99(加州,纽约州,新泽西,麻省和宾夕法尼亚,以上州部分地区);最终价满$49免运费

    两日达(包含阿拉斯加夏威夷)运费$19.99起

退换政策

提供30天内退还保障。产品需全新未使用原包装内,并附有购买凭据。产品质量问题、或错发漏发等,由商家造成的失误,将进行补发,或退款处理。其它原因需退货费用由客户自行承担。

由 京东图书 销售

服务保障

Yami 跨店满$69免运费
Yami 30天退换保障

亚米-中国集运仓

由亚米从中国精选并集合各大优秀店铺的商品至亚米中国整合中心,合并包裹后将一次合包跨国邮寄至您的地址。跨店铺包邮门槛低至$69。您将在多商家集合提供的广泛选品中选购商品,轻松享受跨店铺包邮后的低邮费。

退换政策

提供30天内退换保障。产品需在全新未使用的原包装内,并附有购买凭据。产品质量问题、错发、或漏发等由商家造成的失误,将进行退款处理。其它原因造成的退换货邮费客户将需要自行承担。由于所有商品均长途跋涉,偶有简易外包压磨等但不涉及内部质量问题者,不予退换。

配送信息

亚米中国集运 Consolidated Shipping 运费$9.99(订单满$69 包邮)

下单后2个工作日中国商家发货,所有包裹抵达亚米中国整合中心(除特别情况及中国境内个别法定节假日外)会合并包裹后通过UPS发往美国。UPS从中国发货后到美国境内的平均时间为10个工作日左右,根据直发单号可随时跟踪查询。受疫情影响,目前物流可能延迟5天左右。包裹需要客人签收。如未签收,客人须承担包裹丢失风险。

由 京东图书 销售

服务保障

满$69免运费
正品保证

配送信息

Yami Consolidated Shipping 运费$9.99(订单满$69包邮)


下单后1-2个工作日内发货。 物流时效预计7-15个工作日。 如遇清关,交货时间将延长3-7天。 最终收货日期以邮政公司信息为准。

积分规则

不参加任何折扣活动以及亚米会员积分制度。

退换政策

提供30天内退还保障。产品需全新未使用原包装内,并附有购买凭据。产品质量问题、或错发漏发等,由商家造成的失误,将进行补发,或退款处理。其它原因需退货费用由客户自行承担。

赠品

为你推荐

                                                       

                                                       

                                                       

                                                       

                                                       

                                                       

                                                       

                                                       

评论

分享你的感受,帮助更多用户做出选择。

写评论
当前选择暂无用户评论,以下为该商品其他选项的评论内容。
排序
默认

当前商品
User Avatar VIP
:

{{ strLimit(comment, 200) }}

{{ comment.content }}

Review Image

{{ comment.imageList.length }} photos

Show Original

暂无符合条件的评论

评论详情

Yami Yami
:

{{ showTranslate(commentDetails) }}收起

{{ strLimit(commentDetails, 800) }}查看全部

Show Original

{{ commentDetails.content }}

Yami
查看更多

{{ formatTime(commentDetails.in_dtm) }} 已购买 {{ groupData }}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{ commentDetails.in_user == uid ? __('Delete') : __('Report') }}

请输入内容

回复{{ '(' + replyList.length + ')' }}

Yami Yami

{{ showTranslate(reply) }}收起

{{ strLimit(reply, 800) }}查看全部

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{ reply.reply_in_user == uid ? __('Delete') : __('Report') }}

请输入内容

取消

End

发表评论
商品评分

请输入评论

  • 一个好的昵称,会让你的评论更受欢迎!
  • 修改了这里的昵称,个人资料中的昵称也将被修改。
感谢你的评论
你的好评可以帮助我们的社区发现更好的亚洲商品。

举报

取消

确认删除该评论吗?

取消

{{ brandInfo.title }}

查看全部

品牌故事

{{ brandInfo.descView }} ...查看全部

{{ isZh ? album.topic_name : album.topic_ename }}

商品

{{ album.goods_count_info }}

购买数量

{{ album.bought_count_info }}

查看全部

{{ story.page_title }}

{{ story.page_desc }}

查看详情
看了又看
品牌故事

{{ brandInfo.title }}

{{ brandInfo.desc }}
Yami

下载亚米应用